UIWebView忽略磁盘缓存?

时间:2015-08-05 12:07:41

标签: ios caching ios8 uiwebview persistent-storage

在我的混合应用程序中,我将Web资源命名为main.css?{timestamp-file-was-modified},并为它们提供一年的最大年龄缓存标头,以便客户端应该或多或少地保留它。

然而,我的iOS应用中似乎发生了UIWebView在应用生命周期内尊重缓存标头,即当我加载包含main.css?{same-timestamp}的新网页时,它不会甚至尝试重新验证,因为它知道它在缓存中有正确的文件。 但是,在应用程序重新启动时(被杀死或设备关闭后)UIWebView再次获取所有资源,忽略缓存。我通过Charles Proxy运行它来验证是这种情况。

我查看了SQlite cache.db,我看到main.css?{same-timestamp}在那里,但UIWebView仍然不会从缓存中加载它,导致初始页面加载速度明显变慢比它可能。

我在iOS 8.4的iPhone和iOS 8.2的iPhone上尝试过。结果相同。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您真的想控制缓存,可以在委托中注册自定义NSURLProtocol子类,然后使用- (void)startLoading可以从本地存储加载任何内容。