我正在使用Cordova / Phonegap构建一个iOS应用程序,它基本上有一个UIWebView并从外部资源加载我的Web应用程序。 (iOS6的+)
此Web应用程序需要运行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查看请求,如果App加载一次,所有重新加载都会将304,Not Modified返回到该文件
以下是问题
每次打开iOS App时,虽然文件位于缓存文件夹中,但它会从服务器再次加载并保存最新版本; if-modified-since在打开后未在第一个请求中设置为request参数,但是以下是。
我不确定是否需要明确要求Xcode从磁盘加载NSURLCache,或者我没有正确设置它。
任何人都可以在此过程中看到问题吗?
更多信息:
缓存控制私有,max-age = 31536000,必须重新验证。 NSURLRequest cachePolicy是NSURLRequestUseProtocolCachePolicy。
谢谢!
答案 0 :(得分:1)
问题是由 CordovaLibrary 引起的。它有一个CDVURLProtocol& CDVUserAgent和他们拦截请求,与现有信息冲突。
要解决此问题,您必须阻止CDVUserAgent设置UserAgent,但它可能会影响对本地文件的限制。就我而言,从服务器检索来源。