Android WebView不缓存HTTPS内容

时间:2014-01-29 15:29:32

标签: android caching webview

我有一个单页面webapp,它显示在Android WebView(Android Jelly Bean)中。这是一个不错的大小,所以我想尽可能多地利用缓存。

如果应用程序是通过HTTP提供的,则缓存填充到大约8兆,并且在应用程序重新启动时,Web内容几乎立即从缓存中加载(没有观察到网络流量)。

但是,如果应用程序是通过HTTPS提供的,则只使用一小部分缓存(几百K),并且在应用程序重启时,所有的Web资产(JS / CSS等)都是从服务器了。由于我没有root设备且文件看起来已被重命名(例如webviewCacheChromium / data_0等),因此很难确切地看到正在缓存哪些文件。

我尝试设置'Cache-Control:max-age'响应标头(因为我相信这可以强制旧浏览器中的https缓存),但它没有任何区别。

我找不到任何建议默认情况下WebView不会缓存https内容的内容。我相信大多数现代浏览器都是这样的 - 我希望Android WebView能够做到这一点。

我在这里遗漏了什么吗?是否需要告知WebView缓存https内容?

提前致谢,

尼尔。

1 个答案:

答案 0 :(得分:2)

对问题进行排序。

以防万一将来遇到同样的问题......

由于SSL错误(不幸的是,它被应用程序中的其他地方吞没)导致应用程序未正确缓存。基本上,如果您没有正确设置SSL证书,那么您将看到这一点。

要检查此扩展WebViewClient.onReceivedSslError()并记录任何错误。

我们遇到了两个不同的错误,因为我们的SSL证书没有正确设置 - 一旦修复,应用程序就会按预期缓存。

希望这可以节省一些人经历的浪费时间:)