这是我的场景。我正在使用WebView在一个应用程序中显示我的移动就绪网站。我们定期更新我们的网站,并自动清除网站缓存,这样访问者就可以获得我们网站的最新版本,而不是过时的版本。我注意到,WebView有时会提供旧内容--有时不会加载我们网站的新版本。因此,我正在寻找一种强制WebView显示新内容的方法。
我知道我可以完全禁用WebView缓存,并强制它每次都从我们的服务器上抓取页面,但这效率很低。我希望在缓存的页面是最新版本时使用缓存;如果不是最新版本,则不应该使用缓存。
我能想到的唯一方法就是手动清除缓存,就像这样:
@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时,将获取最新版本。
谢谢!
发布于 2016-03-11 14:35:23
在html代码中的js/css文件链接中添加一个参数,该参数可以是日期时间或版本字符串,如下所示:
<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并重新加载。
发布于 2016-07-21 23:59:10
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.clearCache(true);
mWebView.loadUrl("about:blank");
mWebView.reload();
mWebView.loadUrl("http:xxxxxxx");我也在寻找解决方案,但对我来说唯一有效的就是这个命令。
https://stackoverflow.com/questions/34572748
复制相似问题