缓存一般是对get 方法进行缓存。get 方法是用来查询数据的。例如从网络上获取图片,而post 方法一般是提交任务,提交图片等等虽然都可以使用缓存,但是get 相对校对的使用缓存。 在IOS5 之前 支持内存缓存。在IOS5之后支持内存和硬盘双缓存。
在IOS中想用缓存技术 需要用到NSURLCache , NSCacheRULResponse 类。
----------------------------------------------------------------------------------------------------分割线
IOS 提供NSURLCache 一个静态方法。[NSURLCache shareURLCache]; 当然也可以自定义 . 设置缓存 NSMutableURLRequest *request=nil;
request.cachePolicy= NSURLRequestReturnCacheDataElseLoad ;
IOS 对NSURLRequest 提供了7种缓存。但是能用的只有四种.
NSURLRequestUserProtocolCachePolicy 、、 默认的缓存策略
NSURLRequstReloadIgnoringLocalCacheData. 、。。 忽略缓存,重新请求
NSURLRequstReturnCahceDataElseLoad 、、、有缓存就用缓存,没有缓存就重新请求
NSURLRequestReturnCacheDataDontLoad 、、、有缓存就用缓存,没有缓存就不发请求
需要定期清理缓存缓存 (比如7天清理一次,在后台)
NSString *path=@"http://www.baidu.com";
NSURL *url = [NSURL URLWithString:path];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];
request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
NSURLCache *urlCahe = [ NSURLCache sharedURLCache];
NSCachedURLResponse *cacheRequest= [urlCahe cachedResponseForRequest:request ];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if (data) {
NSString *text=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",text);
}
}];
NSURLCache *urlCache= [NSURLCache sharedURLCache ];
[urlCache removeAllCachedResponses ];
像今日头条这样的应用一般 在没有网的时候也能加载一部分数据
在 viewDIdLoad 中加载本地缓存的数据在 viewWillAppear 中加载 网络请数据。