防止chrome缓存标头重定向

时间:2017-03-09 12:22:40

标签: php google-chrome browser-cache

我有几个视图,如果用户没有登录或在其他状态(购物车视图中的购物车不是空的),我将他重定向到其他地方,我已经写了一个方法,但谷歌Chrome缓存我的重定向。

示例:如果用户试图进入结账并因为购物车为空而被重定向,下次即使购物车已满,他也会再次被重定向。只有在手动转到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,对于一个总是改变但仍然得到相同结果的参数。

请注意,JS重定向是不可能的,因为UX是该网站的关键。

有任何线索吗? 谢谢,

1 个答案:

答案 0 :(得分:1)

问题出在我的.htaccess上,我只需要设置:

$(document).ready(function(){
  $('img').each(function(){
    if($(this).attr('src').indexOf('imgur') != -1){
      $(this).css('opacity', 0.3);
    }
  });
});

完全解决了这个问题。