簡體   English   中英

如何使Android WebView清除緩存?

[英]How to make Android WebView clear cache?

這是我的情景。 我正在使用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時,會抓取最新版本。

謝謝!

在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並進行重新加載。

mWebView.getSettings().setAppCacheEnabled(false);
mWebView.clearCache(true);
mWebView.loadUrl("about:blank");
mWebView.reload();
mWebView.loadUrl("http:xxxxxxx");

我也在尋找解決方案,但對我來說唯一有用的就是這個命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM