If-None-Match和NSURLConnection

时间:2013-06-30 10:49:18

标签: ios http-caching

我的服务器正在为缓存支持设置etag标头元素。

iOS(6.1.4)应用程序使用本机NSURLConnection类向服务器发送XML请求

服务器第一次发送带有标题

中设置的etag的响应

如果iOS应用程序向服务器发送完全相同的请求,我可以在服务器日志中看到NSURLConnection未填充if-none-match标头

...然后服务器响应200而不是304

用于请求的缓存策略是:

[request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];

使用

初始化NSURLCache
[[NSURLCache sharedURLCache] setMemoryCapacity:1024*1024*10];

我的问题: - NSURLConnection没有设置“if-none-match”头字段是否正常? - 我是否需要自己设置此标题字段? (从缓存中获取响应,读取etag值并在请求标头中设置)?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。对我来说,我正在使用默认缓存策略(NSURLRequestUseProtocolCachePolicy),它自动设置" if-none-match"服务器将检查的头字段。但是,将缓存策略设置为" NSURLRequestReloadIgnoringLocalCacheData"显然删除了那个标题字段。

您是否尝试过其他缓存策略值以查看是否为您添加了该标头?

可以在此处看到关于这些不同缓存策略值的精彩博客:http://nshipster.com/nsurlcache/

编辑:我发现了另一个堆栈溢出问题,确认了我上面所说的内容:NSURLCache and ETags

答案 1 :(得分:0)

同时在Xcode中查找符号(右键单击符号并“跳转到定义”)。根据文件的评论,有一些存在但未实现!