微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

三.htaccess到期规则的区别

以下三个.htaccess规则和何时使用每个规则有什么区别,是否有任何特殊用例比其他更优先?

Header set Cache-Control "max-age=290304000" Header set Expires "Thu,15 Apr 2020 20:00:00 GMT" ExpiresDefault "access plus 10 years"

国防部重写目录如果文件/文件夹找不到

我如何得到mod_rewrite在Heroku上工作?

.htaccess将所有的扩展名redirect到PHP

CodeIgniter .htaccess index.PHP重写不在用户目录上工作

htaccess为URL添加.html扩展名,带或不带尾部斜线

Header是mod_headers的指令,允许修改HTTP头字段。 在这种情况下, Header set有效地设置了所提到的标题字段Cache-Control和Expires ,所以已经存在的标题字段将被覆盖。

第一条指令将标题字段Cache-Control的值设置为max-age=290304000 ,该值描述了相对于响应时间的新鲜度生存期为290304000秒。

与此相反,第二个指令将标题字段Expires的值设置为Thu,15 Apr 2020 20:00:00 GMT ,用绝对时间值描述新鲜度生命周期。

Cache-Control的最大期限值和Expires到期时间戳可以转换为另一个

4.2.1。 计算新鲜度寿命

缓存可以通过使用以下的第一个匹配来计算响应的新鲜度生存期(表示为freshness_lifetime):

如果存在max-age响应指令( 第5.2.2.8节 ),则使用其值,或

如果Expires响应头字段( 5.3节 )存在,请使用其值减去Date响应头字段的值,或

但是,如果两者都存在, Cache-Control的最大年龄优先于Expires :

如果响应包含一个带有max-age指令的缓存控制字段(见第5.2.2.8节 ),那么收件人必须忽略Expires字段。 同样,如果响应包含s-maxage指令( 第5.2.2.9节 ),共享缓存接收方必须忽略Expires字段。 在这两种情况下,Expires中的值仅用于尚未实现“缓存控制”字段的收件人。

而不是手动设置这些HTTP缓存控制头字段, mod_expires ExpiresDefault指令允许一个简单的HTTP缓存设置。 可以用绝对值或用相对值(相对于响应时间(即, access / Now ))或者相对于所请求文件修改时间(即, modification )来描述新鲜度生存期。 它使用缓存控制和过期 。

在这种情况下,第三条指令将认的新鲜度寿命设置为从响应时间起10年。

我将使用mod_expires进行HTTP缓存控制,而不是使用Header手动执行。 这是更方便,允许相对和绝对新鲜时间,并使用缓存控制和过期 。

第一条规则将最大年龄条目添加到缓存控制。 浏览器必须在此处以秒为单位重新提取文档。

第二个和第三个规则创建expires头文件。 浏览器必须在这里给出的日期重新获取文档。 而服务器必须做一些计算。

请注意,第二个规则强制同时刷新所有浏览器和所有资源,而第三个和最后一个规则根据请求时间使浏览器缓存无效。 如果您的网站拥有很多流量,您将会看到不同之处:2020年4月15日,您可能会获得一个戏剧性的高峰。

作为一个经验法则: 使用最大年龄。 这是非常好的支持 ,你没有机会创建一个无效的日期。 另外,它更短。

进一步阅读:

Web作者和网站管理员的缓存教程 – 每个Web开发人员必读的内容

歌剧MAMA:HTTP头 – 一些有趣的统计数据,特别是完整的Expires频率表是有趣的:

10个URL权威性地声明,使用“01 1月0001”届满期限(可能是木乃伊)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐