我在我的網站上有一個搜索框,用戶輸入一個術語並顯示結果。當他們點擊其中一個結果(產品)時,他們會進入產品頁面。當他們點擊後退按鈕時,會顯示「警告:此頁面已過期」消息。頁面過期 - PHP/CakePHP和Internet Explorer
我在Apache上使用CakePHP,並建議我需要更改session.cache_control?我試圖在htaccess中將它轉換爲私有,但似乎沒有幫助。
任何幫助非常讚賞。
乾杯, d
我在我的網站上有一個搜索框,用戶輸入一個術語並顯示結果。當他們點擊其中一個結果(產品)時,他們會進入產品頁面。當他們點擊後退按鈕時,會顯示「警告:此頁面已過期」消息。頁面過期 - PHP/CakePHP和Internet Explorer
我在Apache上使用CakePHP,並建議我需要更改session.cache_control?我試圖在htaccess中將它轉換爲私有,但似乎沒有幫助。
任何幫助非常讚賞。
乾杯, d
這是無關的CakePHP也不會話。的確,這個問題出現在所有的網絡編程語言中。
解決方案是讓搜索結果頁面可緩存 - 我想象你不會每5分鐘更新一次目錄?
要使其可緩存,您需要確保搜索條件使用GET而不是POST發送,然後設置正確的標題以使瀏覽器能夠緩存頁面,例如,
header('Cache-Control: max-age=360'); // allows browser to keep for 1 hour
....如果你使用的可能收縮,某些產品的可視性在搜索會話:
header('Varies: Cookie');
C.
您還可以使用Post/Redirect/Get design pattern模式爲了避免這一點。例如:
function index($searchTerms = null) {
if (isset($this->data['Model']['search_terms'])) {
$this->redirect(array($this->data['Model']['search_terms']));
}
// your normal code here.
}
這將導致像/controller/action/search+terms
代替/controller/action?search_terms=search+terms
網址,和搜索術語將被傳遞給動作作爲一個參數(即$searchTerms
在這種情況下)。
第二次提到使用GET參數。記住準則:使用GET檢索數據(idempotent),使用POST來更改數據。我一直都在打破它,但這是一條很好的規則。 – 2010-05-26 15:19:39
謝謝你們,是的,我已經改變它使用GET,現在一切正常。 乾杯 – iamdash 2010-05-27 09:09:30