2010-09-02 108 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