82

getJSONサーバー側から結果を取得するために使用していますが、ブラウザのキャッシュの問題に直面しています。キャッシュをfalseにしたい。getJSON電話の直前に使ってみました。

 $.ajaxSetup({
                cache: false
            })

しかし、期待した結果が得られていません。それはまだ古い結果を示しています。

を使用するなど、他の解決策もいくつか特定しまし.ajaxたが、実際には使用したくありません。

4

3 に答える 3

131

コードを有効にするには、トリガーが必要です。

これにより、将来のすべてのajaxでキャッシュを無効にできるようになります

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

それが役に立てば幸い :)

于 2012-12-03T08:25:48.310 に答える
86

次のいずれかを使用できます。これにより、キャッシュがグローバルに無効になります。

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

または、その代わりに$.getJSON、そのような要求のためだけにキャッシュを無効にします。

$.ajax({
    cache: false,
    url: "/path/to.json",
    dataType: "json",
    success: function(data) {
        ...
    }
});
于 2013-09-18T18:54:49.613 に答える
51

sementeとbonesnatchの答えは正しいですが、$。getJSONなどを使用する場合は、キャッシュを利用します(すべての呼び出しでキャッシュをfalseに設定したくない場合)が、キャッシュを無効にする場合は、 1回の呼び出しで、$。getJSON()のデータプロパティにタイムスタンプを挿入できます。リクエストのクエリ文字列に一意の値を追加することで、リクエストは常に一意になり、ブラウザによってキャッシュされなくなります。常に最新のデータを取得できます。

ロングバージョン:

var ts = new Date().getTime();
var data = {_: ts};
var url = '/some/path.json';

$.getJSON(url, data);

オールインワンバージョン:

$.getJSON('/some/path', {_: new Date().getTime()});

どちらも次のリクエストになります。

/some/path.json?_=1439315011130 

ここで、最後の数字は、コードが呼び出された瞬間のタイムスタンプであるため、常に一意になります。

于 2015-08-11T17:52:29.463 に答える