1. 程式人生 > >android WebView快取機制介紹

android WebView快取機制介紹

當我們載入Html時候,會在我們data/應用package下生成database與cache兩個資料夾:

我們請求的Url記錄是儲存在webviewCache.db裡,而url的內容是儲存在webviewCache資料夾下.

WebView中存在著兩種快取:網頁資料快取(儲存開啟過的頁面及資源)、H5快取(即AppCache)。

一、網頁快取

1、快取構成

/data/data/package_name/cache/
/data/data/package_name/database/webview.db
/data/data/package_name/database/webviewCache.db


2、快取模式(5種)

LOAD_CACHE_ONLY:  不使用網路,只讀取本地快取資料

LOAD_DEFAULT:  根據cache-control決定是否從網路上取資料。

LOAD_CACHE_NORMAL: API level 17中已經廢棄, 從API level 11開始作用同LOAD_DEFAULT模式

LOAD_NO_CACHE: 不使用快取,只從網路獲取資料.

LOAD_CACHE_ELSE_NETWORK,只要本地有,無論是否過期,或者no-cache,都使用快取中的資料。
如:www.taobao.com的cache-control為no-cache,在模式LOAD_DEFAULT下,無論如何都會從網路上取資料,如果沒有網路,就會出現錯誤頁面;在LOAD_CACHE_ELSE_NETWORK模式下,無論是否有網路,只要本地有快取,都使用快取。本地沒有快取時才從網路上獲取。
www.360.com.cn的cache-control為max-age=60,在兩種模式下都使用本地快取資料。

總結:根據以上兩種模式,建議快取策略為,判斷是否有網路,有的話,使用LOAD_DEFAULT,無網路時,使用LOAD_CACHE_ELSE_NETWORK。


3、清除快取

clearCache(boolean)
CacheManager.clear高版本中需要呼叫隱藏API

4、控制大小

無系統API支援。
可選方式:定時統計快取大小、按時間順序刪除快取。

二、H5快取


1、快取構成

根據setAppCachePath(String appCachePath)提供的路徑,在H5使用快取過程中生成的快取檔案。

2、快取模式

無模式選擇,通過setAppCacheEnabled(boolean flag)
設定是否開啟。預設關閉,即,H5的快取無法使用。

3、清除快取

找到呼叫setAppCachePath(String appCachePath)設定快取的路徑,把它下面的檔案全部刪除就OK了。

4、控制大小

通過setAppCacheMaxSize(long appCacheMaxSize)設定快取最大容量,預設為Max Integer。
同時,可能通過覆蓋WebChromeClient.onReachedMaxAppCacheSize(long requiredStorage, long quota, WebStorage.QuotaUpdater quotaUpdater)來設定快取超過先前設定的最大容量時的策略。

這裡又不得不拿IOS做一些比較:IOS中的webview的快取機制可以拿到瀏覽過的網頁的二進位制流,這樣下次就直接可以把流拿去顯示

相關推薦

android WebView快取機制介紹

當我們載入Html時候,會在我們data/應用package下生成database與cache兩個資料夾: 我們請求的Url記錄是儲存在webviewCache.db裡,而url的內容是儲存在webviewCache資料夾下. WebView中存在著兩種快取:網頁資

Android WebView 快取機制和模式詳解

package com.example.webviewtest; import java.io.File; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle;

Android webView 快取 Cache + HTML5離線功能解決

WebView的快取可以分為頁面快取和資料快取。            頁面快取是指載入一個網頁時的html、JS、CSS等頁面或者資源資料。這些快取資源是由於瀏覽器的行為而產生,開發者只能通過配置HTTP響應頭影響瀏覽器的行為才能間接地影響到這些快取資料。       

Android WebView快取機制 & 資源預載入方案

前言 由於H5具備 開發週期短、靈活性好 的特點,所以現在 Android App大多嵌入了 Android Webview 元件進行 Hybrid 開發但我知道你一定在煩惱 Android Webview 的效能問題,特別突出的是:載入速度慢 & 消耗流量今天

Android安全機制介紹

backup 可能 mbed 集合 應用程序 linux用戶 內存空間 bin 實施 Android的安全機制包含下面幾個方面: ? 進程沙箱隔離機制。 ? 應用程序簽名機制。 ? 權限聲明機制。 ? 訪問控制機

Android快取機制詳解之硬碟快取DiskLruCache

簡介 防止多圖OOM的核心解決思路就是使用LruCache技術。但LruCache只是管理了記憶體中圖片的儲存與釋放,如果圖片從記憶體中被移除的話,那麼又需要從網路上重新載入一次圖片,這顯然非常耗時。對此,Google又提供了一套硬碟快取的解決方案:DiskLruCache(非Google官方編

Android圖片載入框架最全解析(三),深入探究Glide的快取機制(筆記)

原文地址:Android圖片載入框架最全解析(三),深入探究Glide的快取機制 筆記: 1.Glide快取簡介 2.快取Key EngineKey 重寫了equals()和hashCode()方法,保證只有傳入EngineKey的所有引數都相同的情況下才認為是

Android中反射機制解析 API介紹 建立private構造方法類例項 反射內部類 使用demo

反射 前言 相關知識點 編譯型語言和解釋型語言 動態型別語言和靜態型別語言 反射(Reflection) Class Class類API Constructor類 AP

Android WebView清空快取

Android原生和H5混合開發,要求使用者退出登入後清空H5所有的快取; 1、清空Cookie CookieSyncManager.createInstance(context.getApplicationContext()); CookieManager

Android ListView 與 RecyclerView 對比淺析--快取機制[轉]

轉自https://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=2653578065&idx=2&sn=25e64a8bb7b5934cf0ce2e49549a80d6&chksm=84b3b156b3c43840061

Android快取機制——DiskLruCache在硬碟中快取

一、Android中的快取策略 一般來說,快取策略主要包含快取的新增、獲取和刪除這三類操作。如何新增和獲取快取這個比較好理解,那麼為什麼還要刪除快取呢?這是因為不管是記憶體快取還是硬碟快取,它們的快取大小都是有限的。當快取滿了之後,再想其新增快取,這個時候就需要

Android快取機制-LruCache

一,快取機制的重要性 伺服器的壓力大大減小; 客戶端的響應速度大大變快(使用者體驗好); 客戶端的資料加載出錯情況大大較少,大大提高了應有的穩定性(使用者體驗好); 一定程度上可以支援離線瀏覽(或者說為離線瀏覽提供了技術支援)。 記憶體快取——LruCache原始碼分

Android WebView簡要介紹和學習計劃

        我們通常會在App的UI中嵌入WebView,用來實現某些功能的動態更新。在4.4版本之前,Android WebView基於WebKit實現。不過,在4.4版本之後,Android WebView就換成基於Chromium的實現了。基於Chrom

Android 踩坑記錄(一)- Recyclerview的快取機制

起因上週因為業務需要,要完成一個展示優惠券資訊的列表,列表內每張券都有詳細資訊,點選詳細資訊或者右面向下的箭頭,可以展開相應優惠券的詳細資訊。展開的同時新增兩個動畫,展開的佈局需要做緩慢展開的動畫,向下展開的箭頭需要做順時針180度旋轉變成向上收縮的狀態。當時看到這覺得沒問題,一個RecyclerView就搞

【騰訊Bugly乾貨分享】Android ListView與RecyclerView對比淺析--快取機制

作者:黃寧源 一,背景 RecyclerView是谷歌官方出的一個用於大量資料展示的新控制元件,可以用來代替傳統的ListView,更加強大和靈活。 最近,自己負責的業務,也遇到這樣的一個問題,關於是否要將ListView替換為Recycl

android之listView快取機制

package com.example.day_05_06; import java.util.ArrayList; import java.util.List; import com.litsoft.General.General; import android.support.v7.app.ActionB

android 視訊的縮圖 快取機制和 非同步載入縮圖

在這次的工作開發專案中,涉及到一個視訊縮圖的視訊列表;這個在大家看來,製作視訊縮圖就是兩行程式碼就搞定的事。確實是這樣的,百度一下,每個帖子都知道製作視訊縮圖的方法,在這裡確實也是一樣的,但是我要實現的是讓縮圖 在ListView上顯示,而且不會出現卡頓,其實也

簡單實現Android圖片三級快取機制

    使用者在使用我們的APP時,通常會重複瀏覽一些圖片,這時如果每一次瀏覽都需要通過網路獲取圖片,那麼將會非常流量。為了節省使用者流量,提高圖片載入效率,我們通常使用圖片三級快取策略,即通過網路、本地、記憶體三級快取圖片,來減少不必要的網路互動,避免浪費流量

android lk機制介紹

                   (L)ittle (K)ernel based Android bootloader First of all thanks to Travis Geiselbrecht, Brian Swetland and Dima Zavin fo

Android快取機制Lrucache記憶體快取和DiskLruCache磁碟快取

1.1 記憶體快取——LruCache原始碼分析     1.1.1 LRU     LRU,全稱Least Rencetly Used,即最近最少使用,是一種非常常用的置換演算法,也即淘汰最長時間未使用的物件。LRU在作業系統中的頁面置換演算法中廣泛使用,我們的記憶體或快取空間是有限的,當新加入一個物