WebView 的 LOAD_NO_CACHE 设置仍然将文件保存到磁盘?

Posted

技术标签:

【中文标题】WebView 的 LOAD_NO_CACHE 设置仍然将文件保存到磁盘?【英文标题】:WebView's LOAD_NO_CACHE setting still saves files to the disk? 【发布时间】:2011-07-11 12:42:53 【问题描述】:

尽管使用了webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);,WebView 仍将 MB 的文件保存到缓存中。有没有办法真正禁用缓存?

谢谢

【问题讨论】:

我认为这个设置是为了页面的第二次加载。我从 setCacheMode 的 api 中得到了这个:缓存的使用方式基于导航选项。对于正常的页面加载,会检查缓存并根据需要重新验证内容。向后导航时,不会重新验证内容,而是从缓存中提取内容。此函数允许客户端覆盖此行为。 【参考方案1】:

似乎没有什么可以完全禁用缓存。

最好忽略缓存并强制 webView 每次都加载新页面。

如果有人担心占用缓存大小,可以限制缓存大小。有很多方法可以做到这一点,看看我的similar answer。希望答案能给出一些提示。

但我认为禁用缓存有两件事很有希望,

1) 在加载页面时使用页眉参数,

注意:适用于 android API 8+

    Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
    noCacheHeaders.put("Pragma", "no-cache");
    noCacheHeaders.put("Cache-Control", "no-cache");
    view.loadUrl(url, noCacheHeaders);

2) 如果您有要加载到 webView 中的 html 页面, 您可以在 HTML 页面中添加以下元标记。

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 

希望这会对你有所帮助。

【讨论】:

【参考方案2】:

在 WebSettings 中尝试setAppCacheEnabled(false)

API 参考: WebSettings.setAppCacheEnabled(boolean flag)

【讨论】:

那是 HTML5 应用缓存功能,而不是缓存下载内容。

以上是关于WebView 的 LOAD_NO_CACHE 设置仍然将文件保存到磁盘?的主要内容,如果未能解决你的问题,请参考以下文章

webView实现网页缩放

UIWebView加载页面

React Native知识8-WebView组件

APP里如何添加本地文本

每日笔记20160223

想问开了webview有啥用