iOS缓存策略

时间:2012-09-12 05:57:44

标签: iphone ios caching nsurlconnection httprequest

我正在连接NSURL,我需要创建一个绕过所有缓存策略的请求。我见过例如:

NSURLRequest *request = [NSURLRequest requestWithURL:baseURL cachePolicy:0 timeoutInterval:10];
self.urlConnection = [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];

请问缓存策略0指的是什么?尝试过搜索数字代表但我没有得到任何我需要的答案。谢谢! :)

3 个答案:

答案 0 :(得分:8)

你应该看一下 NSURLRequestCachePolicy 枚举,这里0表示NSURLRequestUseProtocolCachePolicy,这意味着NSURLRequest不会每次都从服务器加载数据。

enum
{
   NSURLRequestUseProtocolCachePolicy = 0,
   NSURLRequestReloadIgnoringLocalCacheData = 1,
   NSURLRequestReloadIgnoringLocalAndRemoteCacheData =4,
   NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
   NSURLRequestReturnCacheDataElseLoad = 2,
   NSURLRequestReturnCacheDataDontLoad = 3,
   NSURLRequestReloadRevalidatingCacheData = 5
};
typedef NSUInteger NSURLRequestCachePolicy

答案 1 :(得分:2)

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html

  

NSURLRequestUseProtocolCachePolicy = 0

     

指定协议中定义的缓存逻辑   实现(如果有)用于特定的URL加载请求。   这是URL加载请求的默认策略。

示例:如果使用HTTP,将评估HTTP-Header字段以决定是否应使用缓存。

您的案例中的正确政策是:

  

NSURLRequestReloadIgnoringLocalCacheData

答案 2 :(得分:1)

根据这篇文章:http://blackpixel.com/blog/2012/05/caching-and-nsurlconnection.html,如果您使用NSURLRequestUseProtocolCachePolicy且服务器未返回expiration或max-age,则默认缓存时间间隔为6-24小时。所以要小心这个条件。使用NSURLRequestUseProtocolCachePolicy时,最好设置max-age或expiration。