【发布时间】:2014-02-20 14:48:23
【问题描述】:
我正在使用 Cordova/Phonegap 构建一个 iOS 应用程序,它基本上有一个 UIWebView 并从外部资源加载我的 Web 应用程序。 (iOS6+)
这个网络应用程序需要一个 450kb 的 HTML 才能运行,我希望在没有更改的情况下缓存这个文件。 (每隔一周更换一次)
为此,我在初始化期间在我的 AppDelegate 中设置了一个 NSURLCache:
NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024
diskCapacity:20 * 1024 * 1024
diskPath:nil];
[NSURLCache setSharedURLCache:URLCache];
加载应用程序后,文件现在正在缓存,我可以在 Library/Caches/APPName/fsCachedData 上找到它们。
我正在使用 CharlesProxy 查看请求,如果应用程序加载一次,所有重新加载都将 304,未修改,返回到该文件
问题来了
每次打开iOS App,虽然文件在缓存文件夹中,但它会再次从服务器加载并保存最新版本; if-modified-since 不是设置为打开后第一个请求中的请求参数,而是后面的。
我不确定是否需要明确要求 Xcode 从磁盘加载 NSURLCache 或者我没有正确设置它。
任何人都可以看到过程中的问题吗?
更多信息:
缓存控制是私有的,max-age=31536000,必须重新验证。 NSURLRequest cachePolicy 是 NSURLRequestUseProtocolCachePolicy。
谢谢!
【问题讨论】:
标签: ios caching cordova uiwebview nsurlcache