24

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

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

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

4

4 に答える 4

52

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

<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 ファイルをキャッシュすることはありません。

于 2013-02-23T14:34:25.947 に答える
9

私のお気に入りの 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

于 2013-02-23T14:36:59.147 に答える
2

2 つのオプション:

  1. URL の末尾に mySaveFiles.json?t=timestamp クエリ パラメーターを追加します。
  2. XmlHttpRequest オブジェクトを使用してファイルを取り込みます (サーバーによっては、タイムスタンプを追加する必要がある場合もあります)。
于 2013-02-23T14:35:52.590 に答える
-1

データをキャッシュしたくない場合は、以下のメタタグを使用できます

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">
于 2013-02-23T14:34:38.493 に答える