webview的緩存機制

WebView的緩存可以分爲頁面緩存和數據緩存。
頁面緩存是指加載一個網頁時的html、JS、CSS等頁面或者資源數據。這些緩存資源是由於瀏覽器的行爲而產生,開發者只能通過配置HTTP響應頭影響瀏覽器的行爲才能間接地影響到這些緩存數據。
他們的索引存放在/data/data/package_name/databases下。他們的文件存放在/data/data/package_name/cache/xxxwebviewcachexxx下。文件夾的名字在2.x和4.x上有所不同,但都文件夾名字中都包含webviewcache。

數據緩存分爲兩種:AppCache和DOM Storage(Web Storage)。他們是因爲頁面開發者的直接行爲而產生。所有的緩存數據都由開發者直接完全地掌控。
AppCache使我們能夠有選擇的緩衝web瀏覽器中所有的東西,從頁面、圖片到腳本、css等等。尤其在涉及到應用於網站的多個頁面上的CSS和JavaScript文件的時候非常有用。其大小目前通常是5M。
在Android上需要手動開啓(setAppCacheEnabled),並設置路徑(setAppCachePath)和容量(setAppCacheMaxSize)
Android中Webkit使用一個db文件來保存AppCache數據(my_path/ApplicationCache.db)

如果需要存儲一些簡單的用key/value對即可解決的數據,DOM Storage是非常完美的方案。根據作用範圍的不同,有Session Storage和Local Storage兩種,分別用於會話級別的存儲(頁面關閉即消失)和本地化存儲(除非主動刪除,否則數據永遠不會過期)。
在Android中可以手動開啓DOM Storage(setDomStorageEnabled),設置存儲路徑(setDatabasePath)
Android中Webkit會爲DOM Storage產生兩個文件(my_path/localstorage/http_h5.m.taobao.com_0.localstorage和my_path/localstorage/Databases.db)

另外,在Android中清除緩存時,如果需要清除Local Storage的話,僅僅刪除Local Storage的本地存儲文件是不夠的,內存裏面有緩存數據。如果再次進入頁面,Local Storage中的緩存數據同樣存在。需要殺死程序運行的當前進程再重新啓動纔可以。

發佈了49 篇原創文章 · 獲贊 22 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章