我有一个单页面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内容?
提前致谢,
尼尔。
答案 0 :(得分:2)
对问题进行排序。
以防万一将来遇到同样的问题......
由于SSL错误(不幸的是,它被应用程序中的其他地方吞没)导致应用程序未正确缓存。基本上,如果您没有正确设置SSL证书,那么您将看到这一点。
要检查此扩展WebViewClient.onReceivedSslError()
并记录任何错误。
我们遇到了两个不同的错误,因为我们的SSL证书没有正确设置 - 一旦修复,应用程序就会按预期缓存。
希望这可以节省一些人经历的浪费时间:)