UIWebView的离线缓存
来源:互联网 发布:淘宝相片视频制作软件 编辑:程序博客网 时间:2024/04/29 03:25
UIWebView的离线缓存
- 塞北de峰|4天前|编辑|阅读 23
- 原格式|原文链接 http://ctianyu95.diandian.com/post/2012-03-21/18907274
本博客的原则是:不发则已,要发就发牛逼的。不指望上推荐,只希望发些精髓的东西,与业界的朋友共同成长。
相信不少朋友用过UIWebView,webView下载的图片一般比较大,这个要能缓存就好了,可以大幅度提高加载速度,同时为用户节省流量。本文就是讲如何完美解决webView缓存的问题。
实际上,UIWebView自己是有缓存的,但容量有限,清理时间我们也不好掌握,那它是用什么做的缓存呢?是NSURLCache。看到它有几个方法:
+ (void)setSharedURLCache:(NSURLCache *)cache;
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request;
- (void)storeCachedResponse:(NSCachedURLResponse *)cachedResponse forRequest:(NSURLRequest *)request;
太好了,我们只要写一个子类继承NSURLCache,实现后两个方法,再让这个子类对象成为sharedURLCache,就可以操控webView的请求和缓存了。抛个砖吧:
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request { NSString *pathString = [[request URL] absoluteString]; if (![pathString hasSuffix:@".jpg"]) { return [super cachedResponseForRequest:request]; } if ([[MYURLCache sharedCache] hasDataForURL:pathString]) { NSData *data = [[MYURLCache sharedCache] dataForURL:pathString]; NSURLResponse *response = [[[NSURLResponse alloc] initWithURL:[request URL] MIMEType:@"image/jpg" expectedContentLength:[data length] textEncodingName:nil] autorelease]; return [[[NSCachedURLResponse alloc] initWithResponse:response data:data] autorelease]; } return [super cachedResponseForRequest:request];} - (void)storeCachedResponse:(NSCachedURLResponse *)cachedResponse forRequest:(NSURLRequest *)request { NSString *pathString = [[request URL] absoluteString]; if (![pathString hasSuffix:@".jpg"]) { [super storeCachedResponse:cachedResponse forRequest:request]; return; } [[MYURLCache sharedCache] storeData:cachedResponse.data forURL:pathString];}
上面的代码是专门用来搞定webView中的jpg图片的,其中MYURLCache提供了把data读、写入文件的功能,这个不是本文的重点,请各位自己实现吧。
在程序启动的时候,加入以下代码:
MYURLCache *cache = [[MYURLCache alloc] init];[NSURLCache setSharedURLCache:cache];
OK,搞定了,试试webView加载图片吧~
- UIWebView的离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存
- [ios] UIWebView的离线缓存【转】
- 使用NSURLProtocol实现UIWebView的离线缓存
- UIwebView实现html的离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存
- 实现 UIWebView 的离线缓存 CustionURLCache 库
- IOS UIWebView 离线缓存
- 使用NSURLProtocol实现UIWebView的离线缓存的简单实现
- 56.使用NSURLProtocol实现UIWebView的离线缓存-转载
- 55.iOSwebview cache 实现UIwebview离线缓存
- iOS开发通过NSURLProtocol实现UIWebView的离线缓存(离线加载),OC版和Swift3.0版
- UIWebView的缓存:LocalSubstitutionCache
- UIWebView的缓存:LocalSubstitutionCache
- 清除UIWebView的缓存
- C#中加载dll的问题
- 推荐英语学习几本好书
- Teradata数据库TableKind表类型对应
- 你的隐私安全吗:Cookie到底是什么?
- java版坦克大战
- UIWebView的离线缓存
- 慎用多线程!!!
- mahout之2-Kmeans聚类
- 解决 android logcat不打印信息
- 使程序在Linux下后台运行
- JS中Null与Undefined的区别
- Java NIO框架Mina、Netty、Grizzly介绍与对比
- Log打印
- DIV层在IE6下被下拉框遮挡的解决方法