2012-12-28 60 views
2

我想緩存一個PHP站點上成功的文件,但是當我在另一個站點上執行代碼時,它不會被緩存。我使用Firebug進行了檢查,得到了200 OK的狀態,這意味着每次頁面刷新時都會從服務器下載它。PHP緩存腳本不會緩存php文件

這裏是我的代碼:

$now   = time(); 
$generatedAt = gmdate('D, d M Y H:i:s T', $now); 
$lastModified = gmdate('D, d M Y 00:00:00 T', $now); 
$expiresAt = gmdate('D, d M Y H:i:s T', strtotime($lastModified) + 8035200); 
$maxAge  = strtotime($expiresAt) - strtotime($generatedAt); 

header('Last-modified: '.$lastModified); 
header('Cache-control: max-age='.$maxAge); 

額外的信息:

它是從我的其他網站,我得到一個304 NOT MODIFIED狀態,這意味着它不會獲取緩存複製。

此代碼位於文件的頂部,沒有回聲或輸出,這意味着尚未發送標頭。

我的.htaccess文件配置正確,我沒有指定它不應該緩存PHP文件。

+0

您是否在試圖緩存的腳本中使用會話? – Charles

+0

在我的整個網站中沒有任何會話 – Houssni

+0

好的。涉及會話時,PHP喜歡發送緩存清除標頭。您可以檢查並查看請求腳本看到的實際標題嗎?獲得它們會很有用,並且會使實際發生的事情變得非常明顯。 – Charles

回答

1

你試過其他瀏覽器嗎?至少可以這麼說,Firefox的緩存技術是一堆熱門的*。此外,.htaccess並不是唯一的東西 - Apache配置很可能需要在腳本所在目錄的AllowOverride指令中進行一些調整。

另外,請嘗試使用Wireshark觀察網絡上發生的事情 - 什麼頭文件被髮送,真正收到了什麼頭文件?

-1

我想你應該修復這個Last-modified:參數。