一:前言:项目中整个一tab页因为需求变成了加载webView,没网情况下会一片白。。很多APP无网显示的是一张图片,笔者强迫症,坚决做到最好的用户体验,于是缓存了整个webview;
1. 想通过加载HTMLSting字符串缓存webView是不可行, [self.webView loadHTMLString:HTMLSting baseURL:nil];想走这条路的哥们这里说下,肯定是不行的。。简单说下原因:正常的一个h5网页,包含.css样式,.JS等事件,这些都是外部引用的。。所以你缓存不下来。。。但是如果样式啥的都是内联(类似iOS MVC都在控制器里),那么用这个方法是可行的。。。
2.WKWebView能用这个缓存吗? 当然不可以,它不走NSURLProtocol机制,所以不会对URL进行拦截。
3.通过NSURLProtocol是最快捷的方法,下面开始介绍。
插曲:如果你不喜欢看啰嗦的文字,直接上github地址了,https://github.com/horisea/NSURLProtocol-webView,欢迎star,有网情况下运行一次,断网再运行,网页依旧出现,OK
二:NSURLProtoco