為了讓WebView訪問快,一般都是用緩存技術辐真!這里簡單介紹下:
其實http協(xié)議有自身的緩存機制糕珊,android這邊通過簡單配置就可實現(xiàn),緩存一般都是說的對web靜態(tài)資源緩存振愿,如網(wǎng)頁捷犹,js代碼,圖片等冕末;
緩存配置主要是web前端和后臺設置萍歉,如果前端和后臺沒有配置緩存的話,一般http服務器有默認的配置档桃。例:默認沒有配置Cache-Control,或者Expires字段枪孩,那還是要和服務器通信的
Android WebView自身緩存
Android WebView自身緩存,也就是http協(xié)議緩存,這里有個很大缺陷就是系統(tǒng)給的空間太小蔑舞,只有12M(默認系統(tǒng)1/8)拒担,這個應該是幾年前的標準了,目前個人覺得遠遠不夠攻询,所以這塊需要改進
Android WebView緩存改進
通過攔截所有靜態(tài)資源請求从撼,然后對其改進,通過覆蓋WebViewClient下面的方法:
@TargetApi(Build.VERSION_CODES.LOLLIPOP)//sdk21后調(diào)用
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request){
return null;
}
再攔截所有的靜態(tài)資源,并放到本地钧栖,這樣就可以自己控制緩存了低零,以下兩種模式:
-
普通模式
普通模式就是http協(xié)議的緩存默認,通過header里的緩存字段拯杠,先判斷本地有沒有掏婶,是否過期,沒有過期從本地拿阴挣,過期了然后去服務器比較气堕,比較完從服務器或著本地拿數(shù)據(jù)。如果web前端和后臺沒有設置緩存字段畔咧,還會有請求發(fā)生茎芭;
-
強制模式
忽略緩存的字段,強制緩存靜態(tài)資源誓沸。如果資源要更新梅桩,那就讓其修改資源鏈接,如加md5拜隧,versioncode等宿百,注意:這塊對于html網(wǎng)頁需要走普通模式,因為有些html文件名是不會改變的洪添,如index.html
基本流程圖
基本流程