2010-09-09 118 views
0

我已將舊網站移至新服務器,並且客戶端發現了非常奇怪的行爲。無法覆蓋PHP中的Cache-Control

非常接近了尾聲,我有這樣的代碼:

if (!$this->cache) { 
    header('Expires: '.gmdate('d M Y H:i:s', 946684800).' GMT'); 
    header('Cache-Control: no-cache'); 
    header('Pragma: no-cache'); 
} 

現在奇怪的是緩存控制線不工作。 數據包嗅探後,我看到這一點:

Expires: 01 Jan 2000 00:00:00 GMT 
Cache-Control: max-age=300, public 
Pragma: no-cache 

頭的順序恰好是如何設置他們,但緩存控制是完全不同的。我已經爲我提到的任何提及緩存控制的代碼進行了大量的清理,並且只提到了另外一個,並且另一個設計爲強制緩存在不同的文件中,但它與我所看到的不同,因此它不能成爲罪魁禍首。

有誰知道爲什麼緩存控制正在改變?

回答

0

如果您使用會話,PHP可能會覆蓋它們。看看手冊中的session_cache_limiter()

或者,您可以在致電session_start()後嘗試設置這些標頭。

(編輯:我錯過了一些關於「非常接近了尾聲,」所以也許這不是你的問題。)

+0

我沒有使用內置的PHP會話,我也嘗試強制nocache與會話。納達。 – Nick 2010-09-09 06:08:32

0

我認爲你正在運行魷魚,你應該檢查其配置爲:

header_replace Cache-Control max-age=300, public