不使用mod_expires如何添加过期标头?

7

我知道可以使用mod_expires添加过期标头。但是,如果Apache服务器没有安装mod_expires,而且我不想通过像PHP这样的脚本语言路由文件访问,我该怎么办?

3个回答

7
你可以使用mod_header手动设置头字段:
Header set Expires "..."

但是由于过期时间需要一个绝对时间,因此使用缓存控制最大年龄参数来表示相对于访问时间的时间:

Header merge Cache-Control max-age=3600

那么你的意思是,不使用Expires头,而是使用Cache-Control头? - Sebi
仅使用Cache-Control而不是Expires可以正常工作。 - Sebi

2
如果您的Expires头是静态的,则以下内容将为您的js和css文件添加一个Expires头:
<FilesMatch "\.(js|css)$">
Header set Expires "Fri, 01 Jan 2010 00:00:00 GMT"
</FilesMatch>

1
问题是我需要根据当前访问时间计算未来日期,而且我不能使用固定的日期。因此这种方法行不通。 - Sebi

1

这应该告诉浏览器,在随后的访问中刷新页面。过期日期只需在过去即可…… 您可以使用 PHP 设置日期,使其“刚好”在过去,或者将其保留为您找到此答案的日期!!!

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Thu, 2 Sep 2010 05:00:00 GMT");

更新:抱歉 - 我错过了有关通过PHP路由文件的“不”字!您还可以使用这些HTML元标记:

<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="expires" content="Thu, 2 Sep 2010 05:00:00 GMT">

抱歉,这不行,因为我需要为非HTML文件添加到期标头。但好吧,我忘记在我的初始问题中写了。 - Sebi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接