我在一个项目中使用Android Volley Networking库。
当我自己将带有etag的“if-None-Match”添加到标题时,我没有得到304,因为Volley还添加了“If-Modified-Since”。缓存的响应的标头中没有“Last-Modified”。
如果缓存的请求中没有“上次修改时间”,Volley是否应该发送“If-Modified-Since”?
最佳答案
tl;博士:不,我不认为Volley应该在其请求中发送If-Modified-Since
,至少不是当前的方式。
更长的答案:
Volley使用来自先前响应here和here的If-Modified-Since
标头设置Date
标头。
看起来好像有一个patch here可以解决截击问题,从而使其表现得更加适当(即使用Last-Modified
响应标头)。
这是两个随后的请求,它们均从Volley / Android产生200个响应:
Request 1
If-None-Match: "cd090c6cb990a25585f1748d85d764bd"
If-Modified-Since: Tue, 16 Dec 2014 14:21:13 GMT+00:00
Response 1
ETag: "cd090c6cb990a25585f1748d85d764bd"
Date: Tue, 16 Dec 2014 14:21:29 GMT
Request 2
If-None-Match: "cd090c6cb990a25585f1748d85d764bd"
If-Modified-Since: Tue, 16 Dec 2014 14:21:29 GMT+00:00
Response 2
ETag: "cd090c6cb990a25585f1748d85d764bd"
Date: Tue, 16 Dec 2014 14:23:31 GMT
响应不包含
Last-Modified
标头,因此http客户端没有If-Modified-Since
的适当值...但是Volley从上一个响应中发送带Date值的If-Modified-Since
。关于android-volley - 当文档中没有Last-Modified时,Volley将发送If-Modified-Since,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21992721/