2011-08-05 42 views
5

我有一個使用javascript和許多jax調用的php應用程序。我的應用程序正在使用Firefox。但是當我在Internet Explorer-8或類似版本中運行它時,我的ajax調用會緩存在我的瀏覽器中,所以我無法用ajax調用輸出最新的信息,而是爲那些ajax調用的結果提供了舊數據的駐留在瀏覽器緩存中。如何使用javascript或php禁用Internet Explorer緩存

I have tried lots of possible options as listed below 

1.) I added following meta tag in header files 


<meta http-equiv='cache-control' content='no-cache'> 
<meta http-equiv='expires' content='0'> 
<meta http-equiv='pragma' content='no-cache'> 

2)我加了下面的PHP代碼

header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past 
header('Pragma: no-cache'); 

但還是上述2層的方法並沒有解決我的問題,即,請任何人可以幫助我來禁用緩存Internet Explorer時,我的應用程序運行,以便它有可能獲得最新的信息。

在此先感謝

+0

帶HTTP頭的第二個解決方案應該可以工作。只要確保頭文件真的被髮送(使用web-sniffer.net),清除瀏覽器的緩存(當沒有頭文件發送時文件可能被緩存)並再次檢查。 – duri

+0

*我加了下面的php代碼* - 在哪個文件中?響應標題應該放在你的AJAX腳本中。 –

+0

@duri我不相信如果一個項目已經在緩存中,解決方案將工作。我認爲你可以使用javascript => http://stackoverflow.com/questions/2099201/javascript-hard-refresh-of-current-page/2099205#2099205來刷新。其餘的項目,我認爲你應該使用類似filemtime() – Alfred

回答

8

使每個AJAX請求以某種方式唯一。這將阻止IE緩存響應。

例如,如果你的正常AJAX查詢網址是www.mysite.com/ajax.php?dog=cat,在查詢字符串參數添加到每個AJAX請求是唯一的:

www.mysite.com /ajax.php?dog=cat & queryid = 1

每次發出AJAX請求時都增加該參數,並且希望可以爲您做訣竅。

+0

不錯的僞代碼'狗=貓'; p –

+0

雅我已經完成每個ajax請求通過添加當前時間與秒,但我正在尋找一種更好的方式來獲得解決方案通用的所有我的文件和所有請求可以任何人請幫我。 –

+1

'url +「&rand =」+ Math.floor(Math.random()* 11)' –

相關問題