Apache 图像请求-响应状态200或304

Apache 图像请求-响应状态200或304,apache,webserver,http-status-codes,Apache,Webserver,Http Status Codes,我从服务器请求一个映像。有时返回状态代码为304的图像,有时返回状态代码为200的图像。服务器如何决定返回哪个状态码?手册上说,如果文件没有被修改,304将被返回,但我不明白:与哪个版本相比修改,与哪个请求相比,等等? 请详细说明。参考资料: 实际上,如果您发送了一个if\u Modified\u-Since标题,您应该只会得到一个304。让我用一个例子来说明。下面是图像缩略图的请求和响应标题 Request URL:https://www.gravatar.com/avatar/37c44

我从服务器请求一个映像。有时返回状态代码为304的图像,有时返回状态代码为200的图像。服务器如何决定返回哪个状态码?手册上说,如果文件没有被修改,304将被返回,但我不明白:与哪个版本相比修改,与哪个请求相比,等等? 请详细说明。

参考资料:


实际上,如果您发送了一个
if\u Modified\u-Since
标题,您应该只会得到一个304。

让我用一个例子来说明。下面是图像缩略图的请求和响应标题

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一起返回。

谢谢!因此,我假设浏览器根据缓存的信息定义了
(如果已修改,则为
)属性,对吗?因此,如果浏览器没有缓存文档(例如,它是第一次请求的),那么它不会在标题中指定
如果修改,因为
会从服务器获取状态代码200?一旦收到文件,它就会缓存它,随后的请求很可能包含该属性?有任何评论是我之前评论中的问题吗?谢谢,你帮了我很多忙!:)