上一篇文章介绍了WKWebView如何网络请求拦截WKWebView完美网络请求拦截
,最近终于有时间做缓存了。
源码见SSWKURL
缓存
实现比较简单,就是内存和磁盘IO的二级缓存。
策略可以自由控制。比如通常不缓存POST请求,不缓存Ajax,不缓存视频
BOOL shouldCache = YES;
if (request.HTTPMethod && ![request.HTTPMethod.uppercaseString isEqualToString:@"GET"]) {
shouldCache = NO;
}
NSString *hasAjax = [request valueForHTTPHeaderField:@"X-Requested-With"];
if (hasAjax != nil) {
shouldCache = NO;
}
缓存性能
用bilibili单页面测试,缓存前完成加载约4~5秒。缓存后约0.8-1秒。
跟WebView自身的HTTP缓存策略性能类似。性能区别不大
可以大幅度提升首屏加载的性能。(因为Webview首次加载肯定没有缓存)
仍然有进一步优化的空间。
对比vassonic
优势:
- 使用WKWebview(最主要区别)
- 更轻量级
劣势:
- 不支持动静分离(需要重构web页面,意义有限)
- 不支持iOS13以下
网友评论