2011-12-20 22 views
3

我有一個帶有可編輯表格的頁面。我需要用戶能夠編輯它,然後提交他們的更改。一切都很好,直到我將它們重定向到具有新內容的相同頁面(與其更改相關)。但是,他們看到了舊內容。強制刷新的PHP重定向(CTRL + F5)

如果我在瀏覽器上按ctrl + f5,他們的內容會被更新。我想知道是否有辦法強制這一點。這是我的PHP代碼,這不利於力令人耳目一新:

header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past 
header('Pragma: no-cache'); 
header('Location: http://www.bamozir.com/en/mtl-en/recent/general-info/cost#edit'); 

尤金·裏克解決方案可以完美的火狐,Chrome和Safari。但不是在IE和Opera上。任何想法如何解決這個問題?

回答

3

什麼ALLWAYS工作:假設您的網址是http://my.server/my/page?a=b&c=d您重定向到http://my.server/my/page?a=b&c=d&nocache=1234567890與1234567890是一個大的隨機數

+0

我不明白。 – Nasim 2011-12-20 15:35:50

+0

http://www.bamozir.com/en/mtl-en/recent/general-info/cost#edit?nocache=1234567890這沒有奏效 – Nasim 2011-12-20 15:38:52

+0

瀏覽器將請求視爲未被緩存的全新請求如果你添加一些隨機值的網址。這樣它就不會使用緩存。 – rzetterberg 2011-12-20 15:39:04

2

您必須在您希望強制刷新的頁面上設置緩存控制和過期時間。通過在重定向之前設置,您告訴瀏覽器不要緩存您重定向的頁面。

+0

我的所有頁面都使用相同的標題以相同的方式進行控制。我無法改變這個特定的php的。有沒有一種方法可以在用戶按下修改後的數據提交後才能模擬ctrl + f5? – Nasim 2011-12-20 15:33:02

2

用這個頭使用刷新:

Refresh: 0;url=http://www.bamozir.com/en/mtl-en/recent/general-info/cost#edit 

查看更多關於該主題的位置:'Refresh' HTTP header

+0

雖然我想使用php重定向。 – Nasim 2011-12-20 15:35:38

+0

您要求刷新頁面的方法。我已經給你一個辦法做到這一點。 – rzetterberg 2011-12-20 15:39:11

+0

看看標題 – Nasim 2011-12-20 15:53:13