android webview快取訪問優化
為了讓WebView訪問快,一般都是用快取技術!這裡簡單介紹下:
其實http協議有自身的快取機制,android這邊通過簡單配置就可以實現,快取一般說的都是對web靜態資源快取,如html,js,css,png,jpg,gif等;
快取配置主要是web前端和後臺設定,
快取配置主要是web前端和後臺設定,
快取配置主要是web前端和後臺設定,
重要的話需要說3遍,如果前端和後臺沒有配置快取的話,一般http伺服器有預設的配置,如Etag,Last-Modified欄位,但是預設沒有配置Cache-Control,或者Expires欄位,那還是要和伺服器通訊的
Android WebView自身快取
Android WebView自身快取,也就是http協議快取,這裡有個很大缺陷就是系統給的空間太小,只有12M,這個應該是幾年前的標準了,目前個人覺得遠遠不夠,所以這塊需要改進
Android WebView快取改進
通過攔截所有靜態資源請求,然後對其改進,通過覆蓋WebViewClient下面的方法:
@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url){ return null; }
@TargetApi(Build.VERSION_CODES.LOLLIPOP)//sdk21後呼叫 @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request){ return null; }
然後攔截所有的靜態資源,把靜態資源放到本地磁碟,這樣就可以自己控制快取了,對於快取分為兩種模式
-
普通模式
普通模式就是http協議的快取預設,通過header裡的快取欄位,先判斷本地有沒有,是否過期,沒有過期從本地拿,過期瞭然後去伺服器比較,比較完從伺服器或著本地拿資料。如果web前端和後臺沒有設定快取欄位,還會有請求發生;
-
強制模式
強制模式是忽略快取欄位,強制快取靜態資源,如js,css等。如果靜態資源要更新,那就讓其修改靜態資源連結,如加md5值,加版本等,一般打包工具都有這個功能。這塊對於html檔案需要走普通模式,因為有些html檔名稱不會改變,如index.html
基本流程圖

基本流程