Android WebView 緩存詳解
Android WebView 緩存詳解
一. 兩種緩存類型:
頁面緩存:加載一個網頁時的html、JS、CSS等頁面或者資源數(shù)據(jù),這些緩存資源是由于瀏覽器 的行為而產生,開發(fā)者只能通過配置HTTP響應頭影響瀏覽器的行為才能間接地影響到這些緩存數(shù)據(jù)。 而緩存的索引放在:/data/data//databases 對應的文件放在:/data/data/package_name/cache/webviewCacheChromunm下
數(shù)據(jù)緩存:分為AppCache和DOM Storage兩種 我們開發(fā)者可以自行控制的就是這些緩存資源
AppCache:
我們能夠有選擇的緩沖web瀏覽器中所有的東西,從頁面、圖片到腳本、css等等。 尤其在涉及到應用于網站的多個頁面上的CSS和JavaScript文件的時候非常有用。其大小目前通常是5M。 在Android上需要手動開啟(setAppCacheEnabled),并設置路徑(setAppCachePath)和容量 (setAppCacheMaxSize),而android中使用ApplicationCache.db來保存AppCache數(shù)據(jù)!
DOM Storage:
存儲一些簡單的用key/value對即可解決的數(shù)據(jù),根據(jù)作用范圍的不同,有Session Storage和Local Storage兩種,分別用于會話級別的存儲(頁面關閉即消失)和本地化存儲(除非主動 刪除,否則數(shù)據(jù)永遠不會過期)在Android中可以手動開啟DOM Storage(setDomStorageEnabled), 設置存儲路徑(setDatabasePath)Android中Webkit會為DOMStorage產生兩個文件(my_path/localstorage/http_blog.csdn.net_0.localstorage和my_path/Databases.db)
二、WebView的5種緩存模式:
LOAD_NO_CACHE: 不使用緩存,只從網絡獲取數(shù)據(jù)
LOAD_CACHE_ONLY: 不使用網絡,只讀取本地緩存數(shù)據(jù)
LOAD_DEFAULT: 根據(jù)cache-control決定是否從網絡上取數(shù)據(jù)
LOAD_CACHE_NORMAL: API level 17中已經廢棄, 從API level 11開始作用同LOAD_DEFAULT模式
LOAD_CACHE_ELSE_NETWORK,只要本地有,無論是否過期,或者no-cache,都使用緩存中的數(shù)據(jù)
三、WebView緩存模式的設置:
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);//或其他模式
根據(jù)需求緩存策略可為:判斷是否有網絡 有:使用LOAD_DEFAULT/LOAD_NO_CACHE
無:使用LOAD_CACHE_ELSE_NETWORK
四、刪除緩存數(shù)據(jù):
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.clearCache(true);
webView.clearHistory();
webView.clearFormData();
/**
* 清除WebView緩存
*/
public void clearWebViewCache(){
//清理Webview緩存數(shù)據(jù)庫
try {
deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");
} catch (Exception e) {
e.printStackTrace();
}
//WebView 緩存文件
File appCacheDir = new File(getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME);
Log.e(TAG, "appCacheDir path="+appCacheDir.getAbsolutePath());
File webviewCacheDir = new File(getCacheDir().getAbsolutePath()+"/webviewCache");
Log.e(TAG, "webviewCacheDir path="+webviewCacheDir.getAbsolutePath());
//刪除webview 緩存目錄
if(webviewCacheDir.exists()){
deleteFile(webviewCacheDir);
}
//刪除webview 緩存 緩存目錄
if(appCacheDir.exists()){
deleteFile(appCacheDir);
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Android WebView自定義長按選擇實現(xiàn)收藏/分享選中文本功能
- Android實現(xiàn)webview實例代碼
- Android 5.1 WebView內存泄漏問題及快速解決方法
- Android中WebView實現(xiàn)點擊超鏈接啟動QQ的方法
- Android如何讓WebView中的HTML5頁面實現(xiàn)視頻全屏播放
- Android中解決WebView上下滑動監(jiān)聽問題
- Android中webview與JS交互、互調方法實例詳解
- Android WebView或手機瀏覽器打開連接問題解決辦法總結
- Android編程使用WebView實現(xiàn)與Javascript交互的方法【相互調用參數(shù)、傳值】
- Android WebView的詳解及實例
相關文章
Android開發(fā)使用UncaughtExceptionHandler捕獲全局異常
本文主要介紹在Android開發(fā)中使用UncaughtExceptionHandler捕獲全局異常,需要的朋友可以參考下。2016-06-06
Android用StaticLayout實現(xiàn)文字轉化為圖片效果(類似長微博發(fā)送)
這篇文章主要給大家介紹了關于Android利用StaticLayout實現(xiàn)文字轉化為圖片效果,實現(xiàn)的效果類似我們常見的長微博效果,文中給出了詳細的示例代碼供大家參考學習,需要的朋友們下面來一起看看吧。2017-08-08
Unity3D游戲引擎實現(xiàn)在Android中打開WebView的實例
這篇文章主要介紹了Unity3D游戲引擎在Android中打開WebView的實例,需要的朋友可以參考下2014-07-07

