NSCache和NSURLCache
来源:互联网 发布:网络监听 编辑:程序博客网 时间:2024/06/05 19:48
NSCache
(1)可以存储(当然是使用内存)
(2)保持强应用, 无视垃圾回收. =>这一点同 NSMutableDictionary
(3)有固定客户.
+---------------------------+------------------------------+
| NSCache | NSMutableDictionary |
+---------------------------+------------------------------+
| NSDiscardableContent | NSObject |
+---------------------------+------------------------------+
下面是 UIImageView+AFNetworking的使用:
@interface AFImageCache :NSCache
- (UIImage *)cachedImageForRequest:(NSURLRequest *)request;
- (void)cacheImage:(UIImage *)image
forRequest:(NSURLRequest *)request;
@end
NSURLCache
iOS5 之前是不能通过NSURLCache使用硬盘缓存的,所以有SDURLCache这样的library来实现硬盘缓存. iOS5可以使用NSURLCache的硬盘缓存, 只要符合http-cache-control-header即可.
这里有详细的说明:here
这也就是说不用做任何操作, 系统将自动完成满足缓存条件的request.
映射关系:
+---------------------------+---------------------------------+
| NSURLRequest ----|----> NSCachedURLResponse |
+---------------------------+---------------------------------+
通过这样的映射关系实现缓存. 这里存的是NSCachedURLResponse. 也就是说这里的NSURLCache也是一个类似于NSCache的容器.
只不过data是NSCachedURLResponse对象. 并不是类似于image这样的data.
这篇文章可以的:
NSURLCache使用心得here
我测试了一下UIImage->NSData->URL,NSURLConnection, UIWebView不同时候调用
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request;
-(void)storeCachedResponse:(NSCachedURLResponse *)cachedResponse forRequest:(NSURLRequest *)request;
的情况:
+-------------+---------------------+----------------------+------------------+
| | UIImage->URL | NSURLConnection | UIWebView |
+---------+---+---------------------+----------------------+------------------+
| | c | X | first called | first called |
|1’s time |---+---------------------+----------------------+------------------+
| | s | first called | second called | second called |
+---------+---+---------------------+----------------------+------------------+
| | c | X | first called | first called |
|2’s time +---+---------------------+----------------------+------------------+
| | s | first called | X | X |
+---------+---+---------------------+----------------------+------------------+
注:
c 表示 cachedResponseForRequest
s 表示 storeCachedResponse
X 表示不被调用
结果显示: UIImage->URL 是同步的请求. 因为cachedResponseForRequest不能发起同步请求来请求网络.
- NSCache和NSURLCache
- NSCache和NSURLCache
- NSURLCache和NSCache简介
- NSCache和NSURLCache
- NSCache和NSURLCache网络缓存优化
- NSCache和NSURLCache、网络缓存优化
- NSCache和NSURLCache网络缓存优化
- NSCache和NSURLCache、网络缓存优化
- NSURLCache详解和使用
- NSURLCache详解和使用
- NSCache
- NSCache
- NSCache
- NSCache
- NSCache
- NSCache
- NSCache
- NSCache
- Eclipse中的SVN还原到服务器的版本(跟服务器同步)
- JAVA中的数据字典
- 设计模式之单例模式
- 常用的Oracle查询语句
- PLSQL导入和导出工具的使用
- NSCache和NSURLCache
- 如何将windows里面的文件导入到Linux虚拟机中
- 新的起点,新的开始
- 如何制作ISO软件包(这里使用UltraISO工具)
- 让Eclipse提示方法的注释信息
- 类型“System.Web.WebPages.Razor.WebPageRazorHost”违反了继承安全性规则
- 文本文件与二进制文件
- Dom4j学习笔记
- C指针原理(24)-const类型