我正在连接NSURL,我需要创建一个绕过所有缓存策略的请求。我见过例如:
NSURLRequest *request = [NSURLRequest requestWithURL:baseURL cachePolicy:0 timeoutInterval:10];
self.urlConnection = [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];
请问缓存策略0指的是什么?尝试过搜索数字代表但我没有得到任何我需要的答案。谢谢! :)
答案 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)
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。