UIWebView忽略磁盘缓存?

and*_*rrs 5 caching persistent-storage uiwebview ios ios8

在我的混合应用程序中,我将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的iPad上试过了.结果相同.

有任何想法吗?

Psy*_*ity 0

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