2

我无法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]);
  1. 第一个问题是如果我用 SDK10.6 构建这个第二个请求接收 0 字节..
  2. 如果我使用 SDK10.7 构建它,它似乎可以工作,但我不能使用缓存进行持久存储 - 在我重新启动程序后,第一个响应不是从缓存中加载的,而是从服务器加载的。如果我使用缓存策略初始化请求,NSURLRequestReturnCacheDataDontLoad我将得到 0 个字节作为响应。
  3. 如果我将内存限制设置为例如 5 个字节,则第二个请求会收到 0 个字节。

文件 Cache.db 在这两种情况下都是创建的,并且似乎具有有效的数据,但磁盘缓存不起作用。

怎么了NSURLCache?或者我做错了什么?

4

0 回答 0