NSURLProtocol实现对WKWebView加载的网页的数据缓存

敬上原文链接:http://www.jianshu.com/p/8f5e1082f5e0
之前写过一篇文章(http://blog.csdn.net/helloworld_1986/article/details/52224153)介绍通过NSURLProtocol对UIWebView加载的网页进行数据缓存、加载本地资源提升混合开发h5部分的体验,但是WKWebView并不支持NSURLProtocol拦截处理,我也没有深入研究WebKit里面的相关源码。昨晚上看了这位大神的博客,甚是激动啊!早就想换成WKWebView了,奈何目前的项目正在使用基于NSURLProtocol这套缓存机制,所以吃完午饭赶紧研究研究了大神的博客。代码这东西还是要自己写一下才好,于是手动写了个小demo,初步实现了url拦截,图片替换的功能。
大神的博客已经讲的很清楚了,重点代码我贴一下

    //注册scheme
    Class cls = NSClassFromString(@"WKBrowsingContextController");
    SEL sel = NSSelectorFromString(@"registerSchemeForCustomProtocol:");
    if ([cls respondsToSelector:sel]) {
        // 通过http和https的请求,同理可通过其他的Scheme 但是要满足ULR Loading System
        [cls performSelector:sel withObject:@"http"];
        [cls performSelector:sel withObject:@"https"];
    }

实现效果如下图
这里写图片描述
下面两图是UIWebView和WKWebView加载相同的网页,内存占用对比图
这里写图片描述
这里写图片描述
如有疑问,请留言

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值