它是否ExpiresDefault
足以避免来自服务器的 HTTP 状态 304 响应的 Apache 指令?我已经设置了,但是每当我打开本地PHPMyFAQ站点上的任何页面时ExpiresDefault "access plus 10 years"
,我仍然会看到带有 304 响应的日志条目。清空浏览器缓存似乎没有任何改变。"GET /assets/template/default/css/style.min.css?v=1 HTTP/1.1"
问问题
23128 次
1 回答
15
您的服务器发出的Expires:
标头与未来的 304 响应无关。它仅向客户/代理提供他们在考虑资源“陈旧”之前可以等待多长时间的估计。客户端不需要观察此标头,并且可以根据需要自由地继续对同一资源发出新请求。因此,简短地回答您的问题:
不,无论您发送什么标头,您都永远无法明确阻止用户对同一资源提出新请求。
304 响应是客户端请求中匹配If-Match
或标头的结果。If-Modified-Since
这里发生的是您的服务器正在发送以下任何一个/或/两个标头及其原始响应:
ETag
Last-Modified
客户端然后将以下标头与他们的请求一起发回,以查看资源是否已从其缓存版本更改:
If-Match
(电子标签)If-Modified-Since
(最后修改)
如果这些条件中的任何一个为真,那么服务器将发送304 Not Modified
您观察到的响应,并且客户端将知道它可以安全地提供其缓存版本的资源。
合规说明
RFC 2616第 14.21 节实际上禁止合规服务器Expires
在未来一年以上发送标头,因此您首先不应该使用“访问加 10 年”:
HTTP/1.1 服务器不应该在未来一年以上发送 Expires 日期。
于 2014-03-13T19:47:47.287 回答