我无法NSURLCache
在 OSX (10.7) 上获得成功:
NSURLCache *cache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024*20
diskCapacity:1024*1024*5
diskPath:NSHomeDirectory()];
[NSURLCache setSharedURLCache:cache];
NSMutableURLRequest *req=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://wikipedia.org/"]
cachePolicy:NSURLRequestReturnCacheDataElseLoad
timeoutInterval:60];
NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
NSLog(@"Received %lu bytes", [data length]);
sleep(10);
[req setCachePolicy:NSURLRequestReturnCacheDataDontLoad];
data = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
NSLog(@"Received %lu bytes", [data length]);
- 第一个问题是如果我用 SDK10.6 构建这个第二个请求接收 0 字节..
- 如果我使用 SDK10.7 构建它,它似乎可以工作,但我不能使用缓存进行持久存储 - 在我重新启动程序后,第一个响应不是从缓存中加载的,而是从服务器加载的。如果我使用缓存策略初始化请求,
NSURLRequestReturnCacheDataDontLoad
我将得到 0 个字节作为响应。 - 如果我将内存限制设置为例如 5 个字节,则第二个请求会收到 0 个字节。
文件 Cache.db 在这两种情况下都是创建的,并且似乎具有有效的数据,但磁盘缓存不起作用。
怎么了NSURLCache
?或者我做错了什么?