我从服务器请求图像。有时它返回状态代码为304的图像,有时返回状态代码200.服务器如何决定返回哪个状态代码?手册说明如果文件没有被修改则返回304 - 但我不明白:与哪个版本相比,与哪个请求相比进行了修改? 请详细说明。
答案 0 :(得分:1)
让我举一个例子来说明。以下是图片缩略图的请求和响应标题。
Request URL:https://www.gravatar.com/avatar/37c44d25d19d63d3107a8c7154568060?s=32&d=identicon&r=PG
Request Method:GET
Status Code:304 Not Modified
Request Headers
Accept:image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:__qca=P0-584450804-1358798303046
Host:www.gravatar.com
If-Modified-Since:Wed, 11 Jan 1984 08:00:00 GMT
Referer:http://stackoverflow.com/questions
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Response Headers
Accept-Ranges:bytes
Access-Control-Allow-Origin:*
Cache-Control:max-age=300
Date:Wed, 08 Jan 2014 20:27:08 GMT
Expires:Wed, 08 Jan 2014 20:32:08 GMT
Last-Modified:Wed, 11 Jan 1984 08:00:00 GMT
Server:ECS (sea/1C32)
Via:1.1 varnish
X-Cache:HIT
X-Varnish:1925324757 1925322482
如您所见,服务器使用请求标头中的If-Modified-Since
字段来决定是否只返回304,或者在此日期之后修改文件是否返回新内容以及200。
答案 1 :(得分:0)