2017-03-09 129 views
0

我有几个视图,如果用户没有登录或在其他状态(车结账视图中没有空车),我将他重定向到其他地方,我已经写了一个方法,但谷歌浏览器缓存我的重定向。防止铬缓存头重定向

示例:如果用户试图到达结帐处,并且因为他的购物车是空的而被重定向,则下次即使他的购物车已满,他将再次被重定向。它只有在手动转到Chrome的设置并清除缓存和浏览历史记录后才能解决。

我的方法:

public static function redirect($url, $statusCode = 302, $cacheHeader = true) 
{ 
    if($cacheHeader === false) { 
     header("Cache-Control: no-cache, must-revalidate"); 
    } 

    header('Location: ' . $url, true, $statusCode); 
    exit(); 
} 

调用方法:

EkerbaseUtilities::redirect(Ekerbase::getRoot() . '#showcart', 307, false); 

我试过用307,303等的状态,都发生了同样的结果。你也可以看到,Iv'e试图设置一个没有缓存的头部,这也没有做任何事情。

我试过的其他东西是在url中设置?unique()= 1,对于一个总是变化的参数,仍然得到相同的结果。

请注意,由于UX是该网站的关键,所以JS重定向不可能出现问题。

任何线索? 谢谢,

+0

_“我试过的其他东西是在url中设置?unique()= 1,对于一个总是改变的参数,但仍然得到相同的结果。”_ - 这是一个缓存重定向浏览器之前甚至没有请求过的URL ...您尝试过哪一个网址 - 在重定向之前用户发送的原始网址? – CBroe

+0

_“如果用户试图到达结帐处,并且因为他的购物车是空的而被重定向,”_ - 为什么要这么做呢?让他们进入结帐页面,然后向他们发送一条消息,告诉他们没有什么值得注意的,因为他们的购物车是空的。如果您想要进一步指导他们应该/现在可以做什么,请提供“继续购物”等其他链接... – CBroe

回答

0

问题是我的.htaccess,我不得不设置:

Header set Cache-Control max-age=0 

完全固定的问题。