web-dev-qa-db-ja.com

ブラウザーがjsonファイルをキャッシュしないようにする方法

だから私はこの小さなプロジェクトを作っています、そして私は捕獲にいくつかの問題を抱えています。動作していないことの1つは、ブラウザーが保存データを含むjsonファイルをキャッシュし続け、どこかでjsonを更新すると、ブラウザーがキャッシュしていた古いバージョンのjsonファイルに戻ってそれを読み取ることです。残念ながら私はそれを望んでいません。ブラウザがファイルをキャッシュしないようにしたいので、ページをロードするたびに、サーバーにjsonファイルを要求し、キャッシュしたファイルではなく、そのファイルに従って動作します。ただし、ページ上にある他のすべてのものをキャッシュできるようにしたいのですが、これを機能させるためにそれを犠牲にする必要がある場合は、私が喜んで犠牲にします。私はJavaScriptで現在のjsonファイルを破棄してサーバーにもう一度それを尋ねるような呼び出しがあると想像しています

<script src="mySaveFiles.json" cache="no"> 

または私が話していることを達成するのに役立つようなもの...助け?

21
Muggy Ate

最も簡単な方法は、サーバー側で無視されるランダムパラメータをソース文字列に追加することです。

<script src="mySaveFiles.json?nocache=123" ></script>

1つの解決策は、JavaScriptを使用してスクリプト要素を生成し、次のように現在の時刻を追加することです。

var el = document.createElement( script );
el.src = 'mySaveFiles.json?nocache=' + (new Date()).getTime();
document.head.appendChild( el );

このようにすると、JSONファイルは呼び出しごとに(パラメーターにより)別のファイルのように見えるため、ブラウザーはJSONファイルをキャッシュしません。

45
Sirko

私のお気に入りの1つはhtaccessだけです(これが可能なら、私にはわかりません)

複数の拡張機能のキャッシュを無効にする

<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi|json)$">
    Header unset Cache-Control
</FilesMatch>

拡張機能1つだけのキャッシュを無効にする

<Files .json>
    Header unset Cache-Control
</Files>

私はそれをここで見つけました: http://www.queness.com/post/5421/17-useful-htaccess-tricks-and-tips

9

2つのオプション:

  1. MySaveFiles.json?t = timestampクエリパラメータをURLの末尾に追加します。
  2. XmlHttpRequestオブジェクトを使用してファイルをプルします(サーバーによっては、タイムスタンプを追加する必要がある場合があります)。
2
Kevin Seifert