2011-03-02 55 views
0

我用KO3.1 & PHP 5.3.3重定向位置來自瀏覽器緩存。 Cookie的修改不適用

在我的控制器「action_lang」與路線「郎/代碼」我設置用戶界面語言,並將其保存到的cookie:

Cookie::set('language', $code) 

權在此之後我打電話:

Request::current()->redirect('/') 

移動到主網頁,在那裏我有

echo Cookie::get('language') 

打印當前語言。

問題是我的瀏覽器從它的CACHE中讀取重定向頁面,因此Cookie :: get('language')總是顯示SAME值。唯一的辦法是強制瀏覽器用F5刷新,然後它按預期改變,但這不是它應該工作的方式。 /它應該立即改變!

這種方法有什麼問題嗎?或者它只是我太累了... 我確信這段時間以前工作正常,與瀏覽器和KO2非常相似。

請幫助

回答

1

瀏覽器的beahvior實際上可能是正確的,如果緩存頭表明它。正確的解決方案是禁止緩存URI內容。但是,某些瀏覽器在此處存在問題,因此根本不希望瀏覽器緩存URL。

一個簡單的解決方案來欺騙瀏覽器重新加載頁面的確切情況是將一個隨機參數追加到URL,如?refresh=$time$time是當前時間戳。

+0

那麼PHP的會話如何工作?它還將會話ID存儲在cookie中。不是嗎? – spajak 2011-03-02 20:53:45

+0

這與PHP會話無關。如果瀏覽器認爲內容可以被緩存,它根本不會向服務器發送請求,只顯示內容。因此,更改不可見。 – tobyS 2011-03-02 22:55:14