我的服务器正在为缓存支持设置etag标头元素.
iOS(6.1.4)应用程序使用本机NSURLConnection类将XML请求发送到服务器
第一次服务器发送响应时,标题中设置了etag
如果iOS应用程序向服务器发送完全相同的请求,我可以在服务器日志中看到NSURLConnection未填充if-none-match标头
...然后服务器响应200而不是304
用于请求的缓存策略是:
[request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
Run Code Online (Sandbox Code Playgroud)
NSURLCache初始化为
[[NSURLCache sharedURLCache] setMemoryCapacity:1024*1024*10];
Run Code Online (Sandbox Code Playgroud)
我的问题: - NSURLConnection没有设置"if-none-match"头字段是否正常? - 我是否需要自己设置此标题字段?(从缓存中获取响应,读取etag值并在请求标头中设置)?
我遇到了同样的问题。对我来说,我使用默认的缓存策略(NSURLRequestUseProtocolCachePolicy),它会自动设置服务器将检查的“if-none-match”标头字段。但是,将缓存策略设置为“NSURLRequestReloadIgnoringLocalCacheData”显然会删除该标头字段。
您是否尝试过其他缓存策略值以查看它们是否为您添加了该标头?
关于这些不同的缓存策略值的精彩博客可以在这里看到:http://nshipster.com/nsurlcache/
编辑:我发现另一个堆栈溢出问题证实了我上面所说的:NSURLCache 和 ETags
归档时间: |
|
查看次数: |
1216 次 |
最近记录: |