iOS:带有NSURLSession的NSURLCache以及HTTP标头

时间:2015-09-03 11:38:26

标签: ios caching afnetworking nsurlcache

NSURLCache是某种黑暗艺术魔法,既没有正确记录,也没有预期的行为。

我正在使用AFNetworking' AFHTTPSessionManager来使用NSURLSession。我正在使用this模拟服务来创建自定义HTTP响应。

我正在为NSURLCache设置磁盘容量和所有缓存策略。

然后在URLSession:task:didCompleteWithError的{​​{1}}方法中,我这样做:

NSURLSessionTaskDelegate

文档说明了 NSURLRequest *request = task.currentRequest; NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];

  

@result NSCachedURLResponse存储在具有给定的缓存中       请求,如果没有存储NSCachedURLResponse,则为nil       请求。

AFNetworking的常见问题解答声明:

  

只要您的NSURLRequest对象具有正确的缓存策略,   并且您的服务器响应包含有效的Cache-Control标头,   响应将自动缓存以用于后续请求。

毕竟我的假设是,如果未正确设置Cache-Control,cachedResponseForRequest:变量的值将为nil。然而,无论我到目前为止做了什么 - 将其设置为“私人”,“无缓存”等。或者其他 - cachedResponse ALWAYS包含缓存的响应。如何验证缓存机制是否按预期工作?我在设置中缺少什么?

我一直在做我的测试,首先在线提出请求,然后在我的电脑上关闭互联网。 XCode 7.0 beta iOS 9.0。

感谢任何帮助。

0 个答案:

没有答案