如何设置Apache 2.2.3发送“上次修改”等


9

并告诉浏览器重新加载对象(和/或页面...网站上的所有内容),前提是自上次访问以来已对其进行了修改???htaccess,httpd.conf ...您是否准备好适合我的情况的指令?非常感谢你

Answers:



5

请注意,Last-Modified标头是弱缓存标头。当前的首选项是使用Cache-Control标题。

Google在这方面有一篇很好的文章。

优化缓存

过期和缓存控制:最大寿命。这些参数指定资源的“新鲜度生存期”,即浏览器可以使用缓存的资源而无需检查是否可以从Web服务器获得新版本的时间段。它们是无条件应用的“强缓存头”。也就是说,一旦设置好资源并下载了资源,浏览器将不会发出对该资源的任何GET请求,直到达到到期日期或最长使用期限。

Last-Modified和ETag。这些指定有关浏览器检查以确定文件是否相同的资源的某些特征。在Last-Modified标头中,这始终是一个日期。在ETag标头中,它可以是任何唯一标识资源的值(典型的是文件版本或内容散列)。Last-Modified是一个“弱”缓存头,因为浏览器会应用启发式方法来确定是否从缓存中获取项目。(启发式方法在不同的浏览器之间是不同的。)但是,这些标头允许浏览器通过在用户显式重新加载页面时发出有条件的GET请求来有效地更新其缓存的资源。除非资源已在服务器上更改,否则条件GET不会返回完整的响应,因此比完整的GET具有更低的延迟。

我建议根据需要使用Cache-ControlExpires标头,因为它们是强大的缓存标头。某些系统将忽略上次修改日期。

然后,您可以使用诸如curlhttp://redbot.org之类的工具来检查标题。


2
FWIW:“弱”是Google所制造的。Expires对于永不过期的资源来说是完全不合适的标头。某些资源可能会被修改,但不会在某些截止日期被修改。Google的观点是,这Last-Modified需要有条件的GET,而Expires允许浏览器缓存完全跳过GET。
Dancrumb 2014年

1
术语“ 弱”只是语义。关键是Last-Modified在没有其他缓存指令的情况下使用标头会将缓存周期留给HTTP客户端。如果自该Last-Modified日期以来尚未对资源进行修改,则应将其视为新资源。相反,当使用ExpiresCache-Control标题时,起点可以设置一个明确的新鲜期。
jeffatrackaid 2014年

1
“弱”对“强”的定义在tools.ietf.org/html/rfc7232#section-2.1(也请注意@Dancrumb)
John Bentley
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.