2013-02-21 55 views
0
之間

我有一個頁面,執行以下操作清除緩存:IE9不在崗位

  1. 點擊按鈕提交表單
  2. 頁發送到自身,並執行一個SQL查詢的更新場D B。
  3. 然後代碼檢查查詢執行中是否有任何受影響的行,並且它是回顯。我期望它回聲受影響的行「1」

在Firefox,Safari和Chrome中,此操作每次都不失敗。儘管查詢執行得很好(數據庫已更新),但在IE9中,它第一次工作,也許是2次甚至3次,然後它確實有點奇怪 - 回聲受影響的行「0」 -

我相信這是某種形式的緩存問題,因爲當我第1步(提交表單)之前在IE清除瀏覽器緩存它每天都要工作作爲需要的時間。在<head>標籤

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更新。這似乎一直工作。

回答

0

執行查詢後,執行SELECT查詢以確定字段是否使用新的val更新,而不是使用PDO的rowCount()。

僞代碼/ SQL:

  1. 更新表設置字段= '新值',其中字段= '舊值'
  2. 從表中選擇行where字段= '新價值'
  3. 如果行返回然後現場更新