这是我的情景。我正在使用WebView在应用程序中显示我的移动端网站。我们定期更新网站并自动清除网站缓存,以便访问者获取最新版本的网站而不是旧版本。我注意到有时WebView会提供旧内容 - 它有时无法加载我们网站的更新版本。因此,我正在寻找一种方法来强制WebView显示新内容。
我知道我可以完全禁用WebView缓存,并强制它每次从我们的服务器抓取页面,但这是低效的。我希望当缓存页面是最新版本时使用缓存;如果不是,则不应使用缓存。
我能想到的唯一方法是手动清除缓存,类似于以下内容:
我知道我可以完全禁用WebView缓存,并强制它每次从我们的服务器抓取页面,但这是低效的。我希望当缓存页面是最新版本时使用缓存;如果不是,则不应使用缓存。
我能想到的唯一方法是手动清除缓存,类似于以下内容:
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.clearCache(true);
}
然而,这种方法效率不高--每次页面显示后都没必要清除整个缓存。我的问题是,是否有办法仅清除缓存的HTML文件,而将CSS/JS等保留下来?这样就可以在总是清除缓存和提供陈旧内容之间达成良好的平衡。仅在每次页面视图后移除缓存的HTML文件,WebView被迫从服务器上抓取最新的HTML页面,而不需要重新加载CSS或JS。
更好的方法是,为了节省不必要的处理能力,是否有一种方式仅从缓存中删除用户正在访问的特定页面?例如,在加载google.com之后,删除google.com的缓存HTML页面(但不删除CSS、JS等),以便下一次加载google.com时将获取最新版本。
谢谢!