【问题标题】:UIWebView ignoring disk cache?UIWebView 忽略磁盘缓存?
【发布时间】:2015-10-28 04:53:15
【问题描述】:

在我的混合应用程序中,我将网络资源命名为 main.css?{timestamp-file-was-modified},并为它们提供长达一年的 max-age 缓存标头,以便客户端或多或少地永久保留它。

然而,在我的 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 上进行了尝试。结果一样。

有什么想法吗?

【问题讨论】:

    标签: ios caching ios8 uiwebview persistent-storage


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-25
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 2011-02-03
      • 2015-10-01
      • 2015-05-22
      相关资源
      最近更新 更多