以下三个.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 举报,一经查实,本站将立刻删除。