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

sme*_*pie 9 cache server-setup last-modified apache-2.2

并告诉浏览器重新加载对象(和/或页面......网站上的所有内容)只有自上次访问时间以来被修改?htaccess,httpd.conf ......你有适合我的情况的现成指令吗?非常感谢您

mat*_*hew 7

html5boilerplate.com包含一个注释良好的 .htaccess 文件,其中包含许多您应该考虑的标准设置。其中包括使内容过期的合理设置(过期、电子标签等)。

这是关于 mod_expires文档


jef*_*aid 5

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

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

优化缓存

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

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

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

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

  • FWIW:“弱”是谷歌编造的。对于未过期的资源,`Expires` 是一个完全不合适的标头。某些资源可能会被修改,但不会在某个到期日期。Google 的观点是“Last-Modified”需要有条件的 GET,而“Expires”允许浏览器缓存完全跳过 GET。 (2认同)