2013-02-23 12 views
16

だから私はこの小さなプロジェクトを作ってるんだと私はキャッチして、いくつかのトラブルを抱えています。 1つは動作していないのは、ブラウザが保存データを含むjsonファイルをキャッシュしていて、どこか別のjsonを更新すると、ブラウザはキャッシュされている古いバージョンのjsonファイルに戻ります。残念ながら私はそれを望んでいません。私はブラウザにファイルをキャッシュさせたくないので、ページを読み込むたびにサーバにjsonファイルを要求し、キャッシュされたファイルの代わりにそのファイルに従って動作します。私はしかし、ページ上にある他のすべてのものをキャッシュすることができるようにしたいと思いますが、これがうまくいくためにはそれを犠牲にしなければならない場合、それは私が喜んでいる犠牲です。私はJavaScriptで私が「何を達成するために現在のJSONファイルを破棄し、それのためにサーバーを再尋ねる行くと言い、通話やどのようにJSONファイルをキャッシュからブラウザを防ぐために

ソートの
<script src="mySaveFiles.json" cache="no"> 

か何かのようなものがあるだろうということを想定しています話をして...助けてくれる?

+0

**キャッシング..... – arqam

答えて

33

最も簡単な方法は、

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

一つの解決策ではJavaScriptを使用してスクリプト要素を生成し、このような現在の時刻を付加することであろう、サーバー側で無視されますいくつかのランダムなパラメータと元の文字列を追加することです:

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

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

+0

このように、ヘッダーにmySaveFilesのsrcを持つタグを使用する代わりに、ページがロードされたときに最初に実行された関数にそのコードを指定したコードを呼び出す私はそれを記述した方法ですか? –

+0

@MuggyAte基本的にはい、 – Sirko

+0

ありがとうございます。私は他の人々のいくつかによって提案されている他の方法のいくつかを試しましたが、これは私が望むものを達成するのに最も成功したようです。ありがとう –

0

あなたが任意のデータをキャッシュしたいいけない場合、あなたはメタタグ以下

<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="expires" content="-1"> 
+0

jsonファイルを除いてすべてをキャッシュすることができればいいです。私はこれを既に試しましたが、パフォーマンスを大幅に低下させるようです。( –

+0

これはJSONファイルのキャッシュを停止するのに役立つのですか?それは個々のHTMLページのためですか?@Ranjith – Vaishak

2

つのオプションを使用することができます?

  1. が最後にmySaveFiles.json T =タイムスタンプのクエリパラメータを追加します。 URLの
  2. (あなたはまだサーバーに応じてタイムスタンプを追加する必要があります)XMLHttpRequestオブジェクトとでファイルを引き出します。
6

私のお気に入りの一つがちょうど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

+0

ああ、それは試しなければならない素晴らしいソリューションです今すぐに:)うまくいけば、これは、事物にタイムスタンプを追加する必要があるよりも簡単になるでしょう –

+0

私はここに問題に走っています。私はそれを貼り付け、私がしたくないものをフィルタにかけましたが、ページの上部にヘッダーがキャッシュ制御を解除しているというこの行の行があり、その行が表示されないようにしています。私は何をしますか? –

+0

コードに正確に何を貼り付けましたか? 1つの内線番号に対してキャッシュを無効にするために更新する –

関連する問題