NSCache和NSURLCache

转载 2013年12月04日 09:55:43

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不能发起同步请求来请求网络.


NSURLCache缓存使用简介

一、需求1.在IOS应用程序开发中,为了减少与服务端的交互次数,加快用户的响应速度,一般都会在IOS设备中加一个缓存的机制。使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行。...
  • jingcheng345413
  • jingcheng345413
  • 2017年02月10日 12:05
  • 1331

NSCache缓存类的详解

NSCache:专门做缓存的类 NSCache简介:NSCache是苹果官方提供的缓存类,用法与NSMutableDictionary的用法很相似,在AFNetworking和SDWebImage中,...
  • u013087513
  • u013087513
  • 2015年10月24日 17:42
  • 4952

NSURLCache使用的坑

NSURLCache使用有许多限制,苹果限制的。 1.只能用在get请求里面,post可以洗洗睡了。 2.缓存机制选择 NSURLRequestReturnCacheDataElseLoad ...
  • github_35041937
  • github_35041937
  • 2016年05月31日 15:09
  • 2981

NSCache和NSURLCache、网络缓存优化

http://www.cnblogs.com/Mike-zh/p/5210169.html 本文目录 一种缓存优化方案响应头'Last-Modified'和请求头'If-Modif...
  • jeffasd
  • jeffasd
  • 2016年06月15日 14:31
  • 355

NSCache和NSURLCache网络缓存优化

首先要说一件重要的事: NSCache和NSURLCache一点关系也没有 NSCache和NSURLCache一点关系也没有 NSCache和NSURLCache一点关系也没有 ...
  • agonie201218
  • agonie201218
  • 2016年11月30日 13:19
  • 292

iOS缓存 NSCache详解及SDWebImage缓存策略源码分析

你要知道的NSCache都在这里转载请注明出处 http://www.jianshu.com/p/239226822bc6本篇文章首先会详细讲解NSCache的基本使用,NSCache是Foundat...
  • u014205968
  • u014205968
  • 2017年10月26日 17:50
  • 125

NSCache的一点小小认识

NSCache   NSCache是一个类似于集合的容器,即缓存。它存储key-value对,这一点类似于NSDictionary类。我们通常用使用缓存来临时存储短时间使用但创建昂贵的对象。重用这些对...
  • longshihua
  • longshihua
  • 2016年08月15日 17:32
  • 822

利用NSCache提升效率

利用NSCache提升效率
  • xiaoqinggege062
  • xiaoqinggege062
  • 2015年11月18日 14:09
  • 183

iOS开发之缓存框架、内存缓存、磁盘缓存、NSCache、TMMemoryCache、PINMemoryCache、YYMemoryCache、TMDiskCache、PINDiskCache

1.在项目中我们难免会用到一些缓存方式来保存服务器传过来的数据,以减少服务器的压力。 缓存的方式分为两种分别为内存缓存和磁盘缓存,内存缓存速度快容量小,磁盘缓存容量大速度慢可持久化。常见的内存缓存有N...
  • zhonggaorong
  • zhonggaorong
  • 2016年06月15日 15:08
  • 5757

NSURLCache让本地数据来代替远程UIWebView请求

  • 2011年10月23日 19:58
  • 758KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSCache和NSURLCache
举报原因:
原因补充:

(最多只允许输入30个字)