2010-09-02 93 views
6

我知道我可以使用mod_expires添加expires标题。但是,如果Apache服务器没有安装mod_expires并且我不想通过PHP等脚本语言将访问路由到文件,我该怎么办?添加过期标题没有mod_expires?

回答

6

你可以使用mod_header设置手动头字段:

Header set Expires "..." 

但由于Expires需要absolute time,使用Cache-Control最大年龄参数时间相对于访问时间:

Header merge Cache-Control max-age=3600 
+0

所以你的意思是不使用Expires头,而是使用Cache-Control头? – Sebi 2010-09-02 10:24:12

+0

工作,只使用缓存控制,不过期。 – Sebi 2010-09-02 11:40:09

1

如果你有静态Expires头,下面将添加一个Expires头到您的js和css文件:

<FilesMatch "\.(js|css)$"> 
Header set Expires "Fri, 01 Jan 2010 00:00:00 GMT" 
</FilesMatch> 
+0

问题是我需要c根据当前访问时间来确定未来日期,我无法使用固定日期。所以这是行不通的。 – Sebi 2010-09-02 10:23:39

1

这应该告诉浏览器刷新以后访问的页面。过期日期必须在过去...您可以使用PHP设置日期以使其“过去”,或只是将它留作您找到答案的日期!

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

更新:道歉 - 我错过了关于通过PHP路由文件中的“不要”!您也可以使用这些HTML meta标签:

<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"> 
+0

对不起,这不起作用,因为我需要添加过期头到非HTML文件。但是,好的,我忘了在我最初的问题中写下这个问题。 – Sebi 2010-09-02 10:25:03