ブラウザがAjaxの結果をキャッシュしないようにするにはどうすればよいですか?私は、ブラウザのデータがクリアされている場合にのみ、結果を表示するAjaxスクリプトを起動しました。ブラウザでAjax/javascriptの結果キャッシュを防止するにはどうすればよいですか?
IE6とFirefox 3.0.10でテスト
ブラウザがAjaxの結果をキャッシュしないようにするにはどうすればよいですか?私は、ブラウザのデータがクリアされている場合にのみ、結果を表示するAjaxスクリプトを起動しました。ブラウザでAjax/javascriptの結果キャッシュを防止するにはどうすればよいですか?
IE6とFirefox 3.0.10でテスト
あなたが送信しているURLにランダムなクエリ文字列を追加します。
など。 Ajaxリクエストが "http://www.xyz.com/a" に送信された場合は、最後にランダムな文字列を追加してください。 "http://www.xyz.com/a?q=39058459ieutm39"
...あなたはjavascriptでランダムな文字列を生成することができます:Math.floor(Math.random()* 1000000) – Manne
この解決法は重大な欠点を持っています。私の場合は、オフラインで使用するためにキャッシュを保存したいので、古いバージョンのリクエストではキャッシュに入れたくありません。 –
これは私が知っている2つの手法です。
ランダムURLが機能をキャッシュしないように(おそらくランダムな値と組み合わせて)ミリ秒のタイムスタンプは、AJAX応答でこの
"Pragma": "no-cache",
"Cache-Control": "no-store, no-cache, must-revalidate, post-check=0, pre-check=0",
"Expires": 0,
"Last-Modified": new Date(0), // January 1, 1970
"If-Modified-Since": new Date(0)
パーフェクト、ありがとう。 (サーバからの応答ではなく、クライアント上でヘッダーが設定されているのは奇妙ですが) –
解決策を実装しようとするとエラーが発生します: 'request header fieldプラグマは「access-control-許可ヘッダー "。どのようにこれを避けるためのアイデア? Look:http://stackoverflow.com/questions/23048184/xmlhttprequest-with-no-cache-request-header-is-not-allowed –
クエリ文字列に乱数を渡すと、私が行っていた呼び出しは失敗します。私はサービスを構築しませんでしたが、すべてのパラメータを解釈しようとしていたようです。これは完璧なソリューションでした、ありがとう! – hack3rfx
jQueryを使用すると、グローバルなajax設定{cache:false}を設定できます。それを参照してください。jquery ajax docs
私はjQuery {cache:false}メソッドを使用しましたが、それは魅力的でした。
$.ajaxSetup({cache: false});
これは素晴らしいです!ランダムなクエリ文字列が機能しません。 – Brent81
そして、私のために、ランダムな文字列だけが機能しました! – user984003
ajaxSetupはajax呼び出しでのみ機能します。他のJS呼び出しでは、疑似乱数列のハックを追加する必要があります。 –
実際に、これはかなりよく文書化の問題である:
完全なコード例は、このようなものです。あなたがGoogleのために非常に包括的な答えを見つけることができると確信しています。 – jrharshath