7

重複の可能性:
AJAX 呼び出しのキャッシュを防止する

jQuery を使用して、Web サーバー上の小さなテキスト ファイルを読み込んでいます。

jQuery.get('scores.txt', function(data) {
    parseScores(data);
});

これはほぼ正常に機能しますが、ファイルの最新バージョンを確実にロードすることはできません。が変更されていてもstory.txt、ページを更新すると、 に対してまったく同じ値が返されdataます。

サーバーは標準の Mac OS Apache で、キャッシュは有効になっておらず、クライアントと同じマシンです。つまり、理論的には、私とサーバーの間に他のキャッシュは存在しません。

ブラウザーにロードhttp://127.0.0.1/scores.txtすると、常に最新バージョンが開きます。

Apache ログを見ると、ページの更新に失敗している間、jQuery GET リクエストがサーバーに到達していません。

この質問を serverfault.com に移動する必要があるのではないかと疑っていますが、このように動作するようになる私の JavaScript の問題を誰かが見ることができますか?

JavaScript/jQuery を使用してブラウザにファイルの新しいコピーを要求させる方法はありますか?

前もって感謝します。

4

4 に答える 4

6

各要求に一意の識別子を追加して、ブラウザーが応答をキャッシュするのを停止できます。クライアントが Web サーバーと同じデバイス上にあるからといって、ブラウザーが応答をキャッシュするのを止めることはありません (また、一部のプロキシ サーバーが適切な環境に関与するのを防ぐこともできません)。

jQuery.get('scores.txt', {
    now: jQuery.now()
}, function(data) {
    parseScores(data);
});
于 2012-12-14T10:13:08.373 に答える
6

cache: falseAJAX オプションに追加してみてください。

jQuery.ajax({
    url: 'scores.txt',
    dataType: 'text',
    type: 'GET',
    cache: false,
    success: parseScores
});

jQuery は、キャッシュを防止するタイムスタンプを各リクエストに自動的に追加します。

于 2012-12-14T10:13:40.877 に答える
5

このようにファイル名にキャッシュバスター(タイムスタンプなど)を追加します。

jQuery.get('scores.txt?' + (+new Date()), function(data) {
   parseScores(data);
})
于 2012-12-14T10:12:36.410 に答える
0
于 2012-12-14T10:14:38.717 に答える