爲了讓WebView訪問快,通常都是用緩存技術,關於緩存這裏有一篇文章講的很詳細 Android:手把手教你構建 WebView 的緩存機制 & 資源預加載方案,請務必看看css
緩存配置主要是web前端和後臺設置,html
緩存配置主要是web前端和後臺設置,前端
緩存配置主要是web前端和後臺設置,android
重要的話須要說3遍,若是前端和後臺沒有配置緩存的話,通常http服務器有默認的配置,如Etag,Last-Modified字段,可是默認沒有配置Cache-Control,或者Expires字段,那仍是要和服務器通訊的git
Android WebView自身緩存,也就是http協議緩存,這裏有個很大缺陷是緩存空間大小不能修改,緩存大小默認是剩餘空間的1/8,我的以爲不夠靈活,因此這塊須要改進github
經過攔截全部靜態資源請求,而後對其改進,經過覆蓋WebViewClient下面的方法:web
@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url){ return null; }
@TargetApi(Build.VERSION_CODES.LOLLIPOP)//21後調用 @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request){ return null; }
而後攔截全部的靜態資源,把靜態資源放到本地磁盤,這樣就能夠本身控制緩存了,對於緩存分爲兩種模式瀏覽器
普通模式緩存
普通模式就是http協議的緩存默認,經過header裏的緩存字段,先判斷本地有沒有,是否過時,沒有過時從本地拿,過時了而後去服務器比較,比較完從服務器或着本地拿數據。若是web前端和後臺沒有設置緩存字段,還會有請求發生;服務器
強制模式
強制模式是忽略緩存字段,強制緩存靜態資源,如js,css等。若是靜態資源要更新,那就讓其修改靜態資源連接,如加md5值,加版本等,通常打包工具都有這個功能。這塊對於html文件須要走普通模式,由於有些html文件名稱不會改變,如index.html
我把這種實現封裝成庫,CacheWebView ,方便使用,歡迎你們拍磚;
兩個步驟就可使用:
compile 'ren.yale.android:cachewebviewlib:2.0.5'
完畢,其餘都不用修改。CacheWebView默認會有內部cache 100M的空間,同時緩存模式是http默認的模式