Internet explorer IE9未清除POST之间的缓存

Internet explorer IE9未清除POST之间的缓存,internet-explorer,session,post,http-headers,browser-cache,Internet Explorer,Session,Post,Http Headers,Browser Cache,我有一个页面可以执行以下操作: 点击按钮提交表格 页面发布到自身,并执行SQL查询以更新数据库中的字段 然后,代码检查查询执行过程中是否有任何受影响的行,并对其进行回显。我希望它会回显受影响的行“1” 在Firefox、Safari和Chrome中,此操作每次都能正常工作。 但在IE9中,它第一次工作,可能是2次,甚至3次,然后它做了一些奇怪的事情-它回显受影响的行“0”-,即使查询执行得很好(数据库已更新)。 我认为这是某种缓存问题,因为当我在步骤1(提交表单)之前清除IE中的浏览器缓存时,它

我有一个页面可以执行以下操作:

  • 点击按钮提交表格
  • 页面发布到自身,并执行SQL查询以更新数据库中的字段
  • 然后,代码检查查询执行过程中是否有任何受影响的行,并对其进行回显。我希望它会回显受影响的行“1”
  • 在Firefox、Safari和Chrome中,此操作每次都能正常工作。 但在IE9中,它第一次工作,可能是2次,甚至3次,然后它做了一些奇怪的事情-它回显受影响的行“0”-,即使查询执行得很好(数据库已更新)。

    我认为这是某种缓存问题,因为当我在步骤1(提交表单)之前清除IE中的浏览器缓存时,它每次都能按需要工作

    我试过使用这个代码:

    header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
    header('Pragma: no-cache'); // HTTP 1.0.
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    
    标签中:

    <meta http-equiv="Cache-Control" content="no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="Mon, 26 Jul 1997 05:00:00 GMT" />
    
    
    
    发生了什么事?我怎样才能阻止IE这样大肆渲染

    更新:


    似乎与PHP PDO的rowCount()存在某种不一致性(用于获取受影响的行)。。。在我的例子中,我无法想象如何,但这种不一致性与浏览器缓存有关。执行查询后,我没有使用rowCount(),而是执行SELECT以确定字段是否使用新val更新。这似乎一直有效。

    执行查询后,不是使用PDO的rowCount(),而是执行SELECT查询以确定字段是否使用新val更新

    伪代码/SQL:

  • 更新表集字段='new value',其中字段='old value'
  • 从字段为“新值”的表中选择行
  • 如果返回行,则更新字段