2011-03-02 53 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