Answers:
html5boilerplate.com包含一个注释良好的.htaccess文件,其中包含许多您应该考虑的标准设置。其中包括用于使内容过期(过期,电子标签等)的合理设置。
这是有关mod_expires的文档。
请注意,Last-Modified
标头是弱缓存标头。当前的首选项是使用Cache-Control
标题。
Google在这方面有一篇很好的文章。
过期和缓存控制:最大寿命。这些参数指定资源的“新鲜度生存期”,即浏览器可以使用缓存的资源而无需检查是否可以从Web服务器获得新版本的时间段。它们是无条件应用的“强缓存头”。也就是说,一旦设置好资源并下载了资源,浏览器将不会发出对该资源的任何GET请求,直到达到到期日期或最长使用期限。
Last-Modified和ETag。这些指定有关浏览器检查以确定文件是否相同的资源的某些特征。在Last-Modified标头中,这始终是一个日期。在ETag标头中,它可以是任何唯一标识资源的值(典型的是文件版本或内容散列)。Last-Modified是一个“弱”缓存头,因为浏览器会应用启发式方法来确定是否从缓存中获取项目。(启发式方法在不同的浏览器之间是不同的。)但是,这些标头允许浏览器通过在用户显式重新加载页面时发出有条件的GET请求来有效地更新其缓存的资源。除非资源已在服务器上更改,否则条件GET不会返回完整的响应,因此比完整的GET具有更低的延迟。
我建议根据需要使用Cache-Control
或Expires
标头,因为它们是强大的缓存标头。某些系统将忽略上次修改日期。
然后,您可以使用诸如curl
或http://redbot.org之类的工具来检查标题。
Last-Modified
在没有其他缓存指令的情况下使用标头会将缓存周期留给HTTP客户端。如果自该Last-Modified
日期以来尚未对资源进行修改,则应将其视为新资源。相反,当使用Expires
或Cache-Control
标题时,起点可以设置一个明确的新鲜期。
Expires
对于永不过期的资源来说是完全不合适的标头。某些资源可能会被修改,但不会在某些截止日期被修改。Google的观点是,这Last-Modified
需要有条件的GET,而Expires
允许浏览器缓存完全跳过GET。