我的服务器正在为缓存支持设置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值并在请求报头中设置)?
发布于 2016-01-26 03:25:41
我在这个问题上遇到了同样的问题。对我来说,我使用的是默认缓存策略(NSURLRequestUseProtocolCachePolicy),它会自动设置"if-none-match“头字段,服务器将检查该字段。但是,将缓存策略设置为"NSURLRequestReloadIgnoringLocalCacheData“显然会删除该标头字段。
您是否尝试过其他缓存策略值,以查看它们是否为您添加了该标头?
在这里可以看到关于这些不同缓存策略值的博客:http://nshipster.com/nsurlcache/
编辑:我发现了另一个堆栈溢出问题,证实了我上面所说的:NSURLCache and ETags
发布于 2016-01-26 04:01:54
还要在Xcode中查找符号(右键单击符号并单击"Jump to definition")。根据文件的注释,有一些是存在的,但没有实现!
https://stackoverflow.com/questions/17389574
复制相似问题