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