设置NSURLRequestCachePolicy和NSURLSession

时间:2015-05-22 15:15:37

标签: ios nsurlsession nsurlcache

我正在使用sessionConfiguration创建NSURLSession,其中我已明确设置requestCachePolicyURLCache

sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfiguration.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad;
sessionConfiguration.URLCache = [NSURLCache sharedURLCache];

创建请求并将其作为NSURLSession dataTaskWithRequest:CompletionHandler:方法中的参数传递。请求的构造如下:

request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:kAENServiceNetworkTimeout];

问题1:

如此设置,磁盘上不会创建fsCachedData文件夹,也不会使用缓存数据。如果仅使用以下命令创建请求:

request = [NSMutableURLRequest requestWithURL:url];

在磁盘上创建缓存,并按预期使用映像。这是Apple代码中的错误吗?

问题2:

在这两种情况下都没有调用URLSession:dataTask:willCacheResponse:completionHandler:委托方法。他们的情况是否会出现这种情况?

更新

我已将示例项目推送到Github,https://github.com/mattmorton/cache-testing

1 个答案:

答案 0 :(得分:0)

问题1:

我认为我对NSURLRequestReturnCacheDataElseLoad的理解不正确。在这种情况下,响应不会被缓存。

问题2:

来自NSURLSessionAsynchronousConvenience类别中的NSURLSession的Apple标题:

  

数据任务便捷方法...创建绕过正常委托调用以响应和数据传递的任务,并提供一个简单的可取消异步接口来接收数据。

我正在使用一个便捷方法处理程序,因此没有调用委托方法。

相关问题