是否可以肯定刷新 $_SESSION[] 全局变量


Is it possible to refresh a $_SESSION[] global variable for sure?

我有一个PHP应用程序,它使用$_SESSION全局来管理应用程序内的数据。但是,我在尝试更新 $_SESSION 的值时遇到了一个小问题,这就是我到目前为止所做的:

  1. 做事
  2. unset($_SESSION['var'])
  3. 做事
  4. $_SESSION['var']=newValue();

我使用这样的$.post()调用 php:

$('#id').click(function(){
    $.post("page.php", function(data){
        //do stuff
        window.location = "goto.php";
    })
})

goto.php从 $_SESSION['var'] 中获取内容并构建一个新的 html。

但是,当网页转到goto.php时,它会加载使用最新版本创建的html $_SESSION['var'] 。请注意,如果我刷新网页,它会加载使用新$_SESSION['var']创建的新内容。

此外,这不是常规行为,有时它会在没有重新加载页面的情况下直接加载。

我在这里做了什么根本性的错误?

这几乎可以肯定是一个缓存问题。您可以将某些标头发送到浏览器以强制它不缓存页面,从而确保每次都重新加载。

您可以在 PHP 中使用以下命令执行此操作:

header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
header('Pragma: no-cache'); // HTTP 1.0.
header('Expires: 0'); // Proxies.

来源:如何在所有浏览器中控制网页缓存?