默认情况下的Webview缓存策略:
1、如果返回头中有Cache-Control及Last-Modified:缓存时间内不会发送请求;只有当缓存时间失效(结合Cache-Control和Date进行计算),Last-Modified会被发送给服务器(If-Modified-Since头),服务器根据If-Modified-Since头判断返回304还是200。
2、返回头中有Cache-Control但是无Last-Modified:缓存时间内不会发送请求;当缓存时间失效(结合max-age和Date进行计算),服务器直接返回200。
3、当有Cache-Control和Expires同时存在,Expires将会被忽略。
4、Webview会忽略ETag。
结论:通过Cache-Control和Last-Modified对缓存进行控制,比WebSettings.LOAD_CACHE_ELSE_NETWORK会更加灵活。
Webview提速:
1、要么缓存(静态资源、接口缓存,动态资源、接口不缓存),这是普适方案;
2、要么预加载(单个webview预加载,类似1元夺宝App的发现那样;也可以两个Webview预加载,一个加载缓存数据,一个请求网络数据,当网络返回和本地缓存速度差不多的时候效果可能不会太明显,具体问题具体分析),非普适方案,依赖使用场景。
3、使用webview不得不接受速度慢的事实,和原生没法比。
网友评论
这个库自定义实现WebView的缓存,使用很简单,欢迎大家拍砖讨论