2011-08-05 2 views
5

私は、javascriptと多くのjax呼び出しを使用してphp poweredアプリケーションを使用しています。私のアプリケーションは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つのアプローチは、私の問題は解決しませんでしたそのために最新の情報を得ることができます。

ありがとうございました

+0

HTTPヘッダーを使用した2番目のソリューションが機能するはずです。ヘッダーが実際に送信されていることを確認し(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クエリのURLがwww.mysite.com/ajax.php?dog=catであれば、ユニークな各AJAX要求にクエリ文字列パラメータに追加します。

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

あなたがAJAXリクエストを作成するたびに、このパラメータを増やしてください。うまくいけば、それはうまくいくはずです。

+0

素敵な擬似コード 'dog = cat'; p –

+0

ya私は秒ごとに現在の時間を追加することでユニークなそれぞれのAjaxリクエストを行ってきましたが、私のすべてのファイルに対する一般的なソリューションを得るもっと良い方法を探しています。助けて。 –

+1

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

関連する問題