增强UIWebView的cache

来源:互联网 发布:python snmpwalk函数 编辑:程序博客网 时间:2024/05/16 23:47

尝试了一下增强UIWebView的cache。不过实际效果并不理想。即便有cache,消除了从新联网请求都时间,但是重新排版时间仍然很长。UIWebView对前进后退都响应速度没明显改善。

 

这里介绍简单粗暴的利用文件系统增加cache的方法。

 

基本原理是继承NSURLCache,并替换默认NSURLCache实例。在发现cache未命中都时候,去请求cache内容。因为UIWebView并不返回所有内容给NSURLCache。具体可以自己跟踪一下里面保存cache的方法。UIWebView每请求一个页面,只会存一次cache,即页面都cache。其他图片,css,js都不会保存。而且实际上也没进内存,NSURLCache默认都实现貌似是抛弃了结果。因为每次从新查询cache都是空返回。

 

这里基于AISHTTPRequest,这样不需要自己写队列和处理cookie。

可以去这里下http://allseeing-i.com/ASIHTTPRequest/

很好很强大都开源代码

 

也可以用NSData直接通过url请求,不过这样出了要考虑cookie以外,靠多线程处理会需要一下开很多线程,要么自己写队列。

 

顺便鄙视一下csdn插入代码不支持objectiv c

 

继承NSURLCache

 

 

 

实现文件cache

 

 

UIWebView会通过cachedResponseForRequest方法查询cache。

这时候可以提交我们自己的cache。

同时,如果cache没有命中,可以利用传入的NSURLRequest发送请求。

这里利用了ASIHTTPRequest的异步方法,发送请求。

 

为了利用ASIHTTPRequest都队列,还修改了一下这个类,增加了一个引用,记录了对应都NSURLRequest。

这样在回调requestFinished方法时,就能知道是那个请求,保存cache。

 

最后去AppDelegate里替换掉全局的NSURLCache

 

 

搞定收工

原创粉丝点击