gpt4 book ai didi

ios - 重新启动后 NSURLCache 未从磁盘加载

转载 作者:行者123 更新时间:2023-11-29 12:54:48 26 4
gpt4 key购买 nike

我正在使用 Cordova/Phonegap 构建一个 iOS 应用程序,它基本上有一个 UIWebView 并从外部资源加载我的网络应用程序。 (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 查看请求,如果应用程序加载一次,所有重新加载都会返回 304,未修改,到该文件

问题来了

每次我打开iOS App,虽然文件在缓存文件夹中,但它会从服务器重新加载并保存最新版本; if-modified-since在打开后的第一个请求中没有设置为请求参数,而是后面的。

我不确定我是否需要明确要求 Xcode 从磁盘加载 NSURLCache,或者我没有正确设置它。

任何人都可以看到过程中的问题吗?

更多信息:

缓存控制是私有(private)的,max-age=31536000,必须重新验证。NSURLRequest cachePolicy 是 NSURLRequestUseProtocolCachePolicy。

谢谢!

最佳答案

问题是由 CordovaLibrary 引起的。它有一个 CDVURLProtocol 和 CDVUserAgent,它们拦截请求,与现有信息冲突。

要解决此问题,您必须阻止 CDVUserAgent 设置 UserAgent,但这可能会影响对本地文件的限制。在我的例子中,源是从服务器检索的。

关于ios - 重新启动后 NSURLCache 未从磁盘加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21420254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com