首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Android WebView清空缓存?

如何让Android WebView清空缓存?
EN

Stack Overflow用户
提问于 2016-01-03 10:26:37
回答 2查看 16.3K关注 0票数 2

这是我的场景。我正在使用WebView在一个应用程序中显示我的移动就绪网站。我们定期更新我们的网站,并自动清除网站缓存,这样访问者就可以获得我们网站的最新版本,而不是过时的版本。我注意到,WebView有时会提供旧内容--有时不会加载我们网站的新版本。因此,我正在寻找一种强制WebView显示新内容的方法。

我知道我可以完全禁用WebView缓存,并强制它每次都从我们的服务器上抓取页面,但这效率很低。我希望在缓存的页面是最新版本时使用缓存;如果不是最新版本,则不应该使用缓存。

我能想到的唯一方法就是手动清除缓存,就像这样:

代码语言:javascript
复制
@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);
    view.clearCache(true);
}

但是,这也是低效的--不需要在每次查看页面后清除整个缓存。我的问题是,有没有办法只清除缓存的HTML文件,而离开CSS / JS /等?在总是清除缓存和有时处理过时内容之间,这将是一个很好的折衷方案。通过在每次查看页面后只删除缓存的超文本标记语言文件,WebView被迫从我的服务器获取最新的超文本标记语言页面,而不必重新加载CSS或JS。

更好的是,为了避免浪费不必要的处理能力,有没有一种方法可以只从缓存中删除用户所在的特定页面?例如,加载google.com后,缓存的google.com页面(而不是CSS、JS等)将被移除,以便下次加载google.com时,将获取最新版本。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-03-11 14:35:23

在html代码中的js/css文件链接中添加一个参数,该参数可以是日期时间或版本字符串,如下所示:

代码语言:javascript
复制
<link rel='stylesheet' href='style/jquery.mobile-1.3.2.min.css?ver=1.3.2'>
<script src="js/jquery-1.8.3.min.js?ver=1.8.3"></script>
<script src="js/jquery.mobile-1.3.2.min.js?ver=1.3.2"></script>
<script src="js/my_script.js?ver=201603111428"></script>

当您的脚本或样式表文件更新时,只需更改为新的参数值,然后webview会将其视为新的url并重新加载。

票数 4
EN

Stack Overflow用户

发布于 2016-07-21 23:59:10

代码语言:javascript
复制
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.clearCache(true);
mWebView.loadUrl("about:blank");
mWebView.reload();
mWebView.loadUrl("http:xxxxxxx");

我也在寻找解决方案,但对我来说唯一有效的就是这个命令。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34572748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档