2012-09-26 70 views
1

我的index.php頁面不斷被緩存,顯示出老計時器值和其他人,即使我使用這個:緩存控制失敗

session_cache_limiter('nocache'); 
session_start(); 
header('Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0'); 

讓瀏覽器緩存的頁面。我檢查了螢火蟲頭輸出的,他們一直在說:

Cache-Control:private, max-age=10800, pre-check=10800 

我曾經有過這樣的HTML META:

<META HTTP-EQUIV="cache-control" content="no-cache" /> 
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1"> 

但是已經禁用那些爲了檢查,如果他們干擾,但啓用或禁用不會產生影響。

所有幫助表示讚賞!

+0

你確定你的頭(...)行正在執行,它不會發送任何警告或錯誤?你有沒有檢查你的錯誤日誌?否則我不明白爲什麼它不起作用。 – eis

+0

Error_log =空,屏幕上沒有錯誤在FireFly中輸出的頭文件仍然是Cache-Control \t private,max-age = 10800,pre-check = 10800,no-cache,must-revalidate,post-check = 0, check = 0並添加標題('Expires:Fri,Jan Jan 2010 00:00:00 GMT');到標題。而且,定時器仍然不會更新。 – Borniet

+0

您確定它確實是將文檔保存在其緩存中的瀏覽器嗎?確保你和服務器之間沒有任何代理,即緩存。 – feeela

回答

3

頭輸出仍然緩存控制私人, 最大年齡= 10800,預查= 10800,無緩存,必重新驗證, 後檢查= 0,預檢查= 0

這意味着,因爲你設置此:

Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0 

在你的應用程序的一些其他組件/配置/頁面設置這樣的:

Cache-Control: private, max-age=10800, pre-check=10800 

兩者都發送給最終用戶。當瀏覽器讀取它們時,「Cache-Control:private」將覆蓋您的值,導致頁面被緩存。

注意:header() will by default override any headers that are previously set,所以它可能是因爲你的行應該覆蓋任何以前的行,所以你可能會在之後設置

你需要找出什麼是設置這些「私人」緩存控制標題和禁用/評論,否則它將無法正常工作。也許稍後在你的代碼中的其他部分?

+0

感謝您的確如此,它確實是來自以前的項目開發人員的一個包含文件,它將緩存控制設置爲其他值。 – Borniet

+0

很好,它得到解決:) – eis

1

將緩存到期日期設置爲舊日期。螢火蟲

header('Expires: Fri, 01 Jan 2010 00:00:00 GMT'); 
+0

在代碼中添加了你的代碼行,但仍然得到了私有的,最大年齡= 10800,預檢查= 10800,no-cache,必須重新驗證,post-check = 0,pre-check = 0。定時器仍然不更新。不在\t \t標題(「refresh:5; url = $ redirectto」),而不是點擊另一個頁面,然後「返回」,而不是通過單擊從另一個頁面返回頁面的鏈接,而不是刷新頁面。 – Borniet