是ExpiresDefault
Apache指令是否足够避免服务器中的HTTP状态304响应?我已经设置了ExpiresDefault "access plus 10 years"
,但是每当我在本地phpmyfaq网站上打开任何页面时,我仍会看到"GET /assets/template/default/css/style.min.css?v=1 HTTP/1.1"
的日志条目。清空浏览器缓存似乎并没有改变任何内容。
您的服务器发送的Expires:
标头与将来的304响应无关。它仅向客户/代理提供估算,以便在考虑资源"陈旧"之前可以等待多长时间。客户不是所需的要观察此标头,并且可以自由地继续向相同资源提出新的请求。因此,简单地回答您的问题:
否,无论您发送的标题如何
304响应是客户端请求中匹配的If-Match
或If-Modified-Since
标头的结果。这里发生的事情是您的服务器以其原始响应发送了以下标题:
-
ETag
-
Last-Modified
客户端将其请求发送回以下标题,以查看资源是否已从其缓存版本中更改:
-
If-Match
(ETAG) -
If-Modified-Since
(最后修改)
如果这些条件中的任何一个都是正确的,则服务器将发送您观察到的304 Not Modified
响应,并且客户端将知道它可以安全地提供其资源的缓存版本。
合规性注释
RFC 2616第14.21节实际上禁止兼容的服务器将来发送Expires
标题超过一年,因此您不应该首先使用"访问加10年" :>
HTTP/1.1服务器将来不应发送到期日期超过一年。