在我的混合应用程序中,我将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上尝试过。结果相同。
有什么想法吗?
答案 0 :(得分:0)
如果您真的想控制缓存,可以在委托中注册自定义NSURLProtocol子类,然后使用- (void)startLoading
可以从本地存储加载任何内容。