2013-08-31 24 views
0

我做了一個PHP程序有一些簡單的MySQL數據庫活動後僅表現。這一切在Chrome和Firefox中都可以正常工作,但在Internet Explorer(IE)中有一些煩人的事情。在添加和檢索時,我可以在Chrome和Firefox中看到所有添加的數據,但在IE中不顯示。當我關閉並重新啓動IE再次顯示最後添加的數據。在我看來緩存(刷新?)問題,因此增加了以下cleach緩存代碼:添加的數據重新啓動Internet Explorer的

<?php 
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
?> 

但是,這是行不通的。我正在使用Internet Explorer 11,希望有人可以幫我解決這個煩人的問題

+0

我自己發現了它。事實證明,這是一個AJAX問題,並添加一個隨機值可以解決問題。好吧,這有點破解,但它的工作原理。 欲瞭解更多信息:http://viralpatel.net/blogs/ajax-cache-problem-in-ie/ – Qwyrp

回答

0

問題是您的網站未能爲緩存資源指定新鮮度生命週期,迫使IE使用啓發式;請參閱http://msdn.microsoft.com/en-us/library/bb250442(v=vs.85).aspxhttp://blogs.msdn.com/b/ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx

如果您正確指定了緩存標頭,它們就會工作。您應該不是發送Pragma也不預檢後檢查

你的標題應該如下:

Expires: Tue, 01 Jan 2000 00:00:00 GMT 
Cache-Control: no-cache, no-store, max-age=0 

這將阻止IE重用比前進/後退導航(其中,由設計,忽略了服務器的緩存指令)以外的任何緩存的響應。

相關問題