2015-04-29 87 views
0

我想在每次訪問時「強制加載」頁面的實例。第二次訪問時刷新站點

有問題的網站是「構建您的自定義產品」 - 網站的種類,並使用多步表單來指導客戶完成產品構建的步驟。客戶希望網站能夠每當用戶訪問網站時,無論是通過直接url還是點擊瀏覽器上的「後退」和「前進」按鈕,都必須刷新。換句話說,沒有緩存(對吧?)。

我試圖用我的SO和其他網站上,其主要包括的

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

但沒有工作找到解決方案。

所以,我想我自己的解決方案:

$location = "/fabriquer/"; 
if(isset($_COOKIE['first_load']) && $_COOKIE['first_load'] == "true") { 
    setcookie('first_load', 'false'); 
    header("Location: " . "http://" . $_SERVER['HTTP_HOST'] . $location); 
} else { 
    setcookie('first_load', 'true'); 
} 

但是,這似乎也不能正常工作。當我按下瀏覽器上的返回按鈕以重新訪問該站點時,刷新不會發生,但在第二個解決方案中,Cookie設置爲true/false。

任何想法?

+0

所以你試圖強制用戶瀏覽器永遠不會緩存頁面?你能更詳細地描述什麼「不工作」明確意味着什麼? – castis

+0

我用更多的細節更新了我的問題。 –

回答

0

您可以讓瀏覽器nto緩存頁面的唯一方法是每次更改url。例如追加一個隨機數或日期時間爲PARAM

$url = $url.'?ver='.rand(1,1000); 

這是你去從一個網頁到另一個添加到每個URL。我在我的地址上添加一個版本號。這樣,每當我更新網站時,每個人都會獲得新的副本。

0

由於Joe在今天早些時候的評論中提到,另一個[刪除?]的評論,我的問題確實是一個問題here重複。

事實證明,我做錯了,刪除的評論讓我走上了正確的道路,直到我看到喬的評論。

刪除的[約]評論指出:

你應該在兩個緩存控制管線合併成一個,作爲第二個覆蓋的第一個。

無論誰寫這個,謝謝。

所以我只是看了原始問題(上面鏈接)中的代碼,並找到了解決我的問題的下面一段代碼。

header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1. 
header('Pragma: no-cache'); // HTTP 1.0. 
header('Expires: 0'); // Proxies. 

然後我在我的瀏覽器測試(正確地清除緩存和隱身模式使用只是爲了安全起見),它完美地工作。我不會「回答我自己的問題」,但我想提供我的推理。這個問題確實是重複的,答案在BalusC的answer中找到。

謝謝你的幫助!