Skip to content

Custom implement Android WebView cache, offline website, let cahe config more simple and flexible

License

Notifications You must be signed in to change notification settings

gitxindong/CacheWebView

Repository files navigation

CacheWebView

English

CacheWebView是Android WebView 缓存的自定义实现,通过拦截静态资源进行内存和磁盘2级缓存实现缓存。突破系统WebView缓存的空间限制,让缓存更简单、更快、更灵活。

使用方式

引入库

compile 'ren.yale.android:cachewebviewlib:1.0.0'

修改代码

  • 将 WebView 改为 CacheWebView

完毕,其他都不用修改。CacheWebView默认会有内部cache200M 磁盘缓存空间,20M内存缓存空间。同时缓存模式是http默认的缓存模式


进阶

  • 修改缓存路径和大小,最好在Application中初始化,初始化没有耗时操作

File cacheFile = new File(this.getCacheDir(),"cache_path_name");
CacheWebView.getWebViewCache().init(this,cacheFile,1024*1024*100,1024*1024*10);//100M 磁盘缓存空间,10M 内存缓存空间


  • 预加载,为了访问更快,可以将常用的页面预加载,要放在UI线程
CacheWebView.cacheWebView(this).loadUrl(URL);

  • 强制缓存,默认是普通缓存,和http缓存模式一样。setCacheStrategy(WebViewCache.CacheStrategy.FORCE),这样对于静态资源直接走缓存,不需要和服务器沟通走304缓存,这样会更快;如果静态资源要更新, 请让web前端同学修改静态资源链接,如给链接加md5值,或者加版本等等方式;
CacheWebView webview;
webview.setCacheStrategy(WebViewCache.CacheStrategy.FORCE);

  • 静态资源后缀映射

    默认磁盘缓存静态资源后缀有:html,htm,js,ico,css,png,jpg,jpeg,gif,bmp,ttf,woff,woff2,otf,eot,svg,xml,swf,txt,text,conf,可以添加删除,addExtension,removeExtension

    默认内存缓存静态资源后缀有:html,htm,js,css,xml,txt,text,conf,可以添加删除,addRamExtension,removeRamExtension

CacheWebView.getWebViewCache().getStaticRes().addExtension("swf").removeExtension("svg")
                .addRamExtension("png").removeRamExtension("html");
  • 删除缓存
CacheWebView webview;
webview.clearCache();

或者

CacheWebView.getWebViewCache().clean();
  • 添加header
CacheWebView webview;
webview.loadUrl(URL,getHeaderMap(URL));
@Override
 public boolean shouldOverrideUrlLoading(WebView view, String url) {
     CacheWebView v = (CacheWebView) view;
     v.loadUrl(url,getHeaderMap(url));
     return true;
 }
  • 阻塞图片加载,让页面更快加载

    默认没有阻塞图片加载,setBlockNetworkImage(true)后。在页面onPageStarted时阻塞图片加载,onPageFinished时打开图片加载

CacheWebView webview;
webview.setBlockNetworkImage(true);
  • 是否使用自定义缓存,默认是自定义缓存,如果是false,那就和正常的WebView使用一样
CacheWebView webview;
webview.setEnableCache(true);
  • 设置User-Agent
CacheWebView webview;
webview.setUserAgent("Android");

流程图

CacheWebView流程图

博客

如何让Android WebView访问更快

About

Custom implement Android WebView cache, offline website, let cahe config more simple and flexible

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%