10

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

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

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

4

3 回答 3

8

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

enum
{
   NSURLRequestUseProtocolCachePolicy = 0,
   NSURLRequestReloadIgnoringLocalCacheData = 1,
   NSURLRequestReloadIgnoringLocalAndRemoteCacheData =4,
   NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
   NSURLRequestReturnCacheDataElseLoad = 2,
   NSURLRequestReturnCacheDataDontLoad = 3,
   NSURLRequestReloadRevalidatingCacheData = 5
};
typedef NSUInteger NSURLRequestCachePolicy
于 2012-09-12T06:07:30.510 回答
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

于 2012-09-12T06:06:06.783 回答
2

根据这篇文章:http ://blackpixel.com/blog/2012/05/caching-and-nsurlconnection.html ,如果您使用的是 NSURLRequestUseProtocolCachePolicy 并且服务器不返回过期或 max-age,则默认缓存时间间隔是 6 - 24 小时。所以要小心这种情况。使用 NSURLRequestUseProtocolCachePolicy 时设置 max-age 或 expire 是更好的做法。

于 2014-04-22T09:05:16.900 回答