Android WebView 不缓存 HTTPS 内容
Posted
技术标签:
【中文标题】Android WebView 不缓存 HTTPS 内容【英文标题】:Android WebView not caching HTTPS content 【发布时间】:2014-02-21 12:19:48 【问题描述】:我有一个单页 web 应用程序,它显示在 android WebView (Android Jelly Bean) 中。这是一个不错的大小,所以我想尽可能多地利用缓存。
如果应用通过 HTTP 提供服务,缓存会填充到大约 8 兆,并且在应用重新启动时,网络内容几乎会立即从缓存中加载(未观察到网络流量)。
但是,如果应用程序通过 HTTPS 提供服务,则仅使用一小部分缓存(几百 K),并且在应用程序重新启动时,所有 Web 资产(JS / CSS 等)都从再次服务器。由于我没有根设备并且文件看起来已被重命名(例如 webviewCacheChromium/data_0 等),因此很难准确查看正在缓存的文件。
我尝试设置 'Cache-Control: max-age' 响应标头(因为我相信这会在旧版浏览器中强制使用 https 缓存),但没有任何区别。
我找不到任何暗示默认情况下 WebView 不会缓存 https 内容的信息。我相信大多数现代浏览器都是这样运行的——我希望 Android WebView 也能做到这一点。
我在这里遗漏了什么吗?是否需要告知 WebView 缓存 https 内容?
提前致谢,
尼尔。
【问题讨论】:
【参考方案1】:对问题进行了排序。
以防万一将来有人偶然发现同样的问题....
事实证明,由于 SSL 错误(不幸的是,该错误被应用程序的其他地方吞没了),该应用程序没有被正确缓存。基本上,如果您没有正确设置 SSL 证书,您会看到这样的结果。
检查此扩展 WebViewClient.onReceivedSslError()
并记录任何错误。
我们遇到了几个不同的错误,因为我们的 SSL 证书设置不正确 - 一旦这些问题得到修复,应用就会按预期缓存。
希望这可以节省我浪费的时间:)
【讨论】:
以上是关于Android WebView 不缓存 HTTPS 内容的主要内容,如果未能解决你的问题,请参考以下文章