2011-06-10 8 views
4

ファイル名が変更されたり、クエリ文字列が追加されたりすると、ブラウザがキャッシュされたJSファイルの新しいバージョンを強制的に取得することが分かりました。ブラウザキャッシングjavascriptとcssファイル

私たちはこれまでこれをやっていません。これまでブラウザが古くなったファイルを扱うことに問題はありませんでした。最近、キャッシュされたJS/CSSファイルを提供しているブラウザに不平を言うIE9を使用しているユーザーがいます。この問題は、サイトを使用しているすべての人で一貫していません。

私の理解では、ファイル名やクエリ文字列は変更されませんが、JSファイルの内容が変更された場合、ブラウザは新しいバージョンを取得します。

なぜこれが起こっているのですか、なぜそれが一貫していないのですか?

どのような考えですか?

+4

そして、どのようにそれはブラウザが「魔法」ファイルを要求せずに内容が変更されたことを把握だろうということですか?ブラウザはURLだけで動作します。 – riwalk

答えて

0

たとえば、ChromeはShift + F5またはある時間が経過するまでスクリプトをキャッシュします(サーバーで変更されたことを無視しても要求を送信しません)。だから、他のブラウザによって行われ

(ただし、キャッシュが有効になっている場合) - それが起こる正確とき、私はdescripeすることはできません

1
内容は同じ(つまり、同じファイル名)を思わとき

はい、ユーザーがキャッシュされたバージョンを得ることができますその後の訪問時にこれらのファイルの

これは本当にあなたのコントロールの範囲を超えています...キャッシュを処理する方法を決定するのはそれぞれの特定のブラウザに依存しています。ユーザーによってはキャッシュが定期的にダンプされたり、右。

更新されたCSSまたはJSコンテンツをユーザーに表示させたい場合は、CSSまたはJSファイル名を変更します。そうでない場合は、短いが不明な期間は矛盾する可能性があります。静的リソースのHTTPヘッダーの有効期限や最大年齢を設定

このチュートリアルでは、あなたを助けるかもしれないが...

http://www.mnot.net/cache_docs/

4

を超えるのではなく、ローカルディスクから以前にダウンロードしたリソースをロードするようにブラウザに指示しますネットワーク。

実際にリソースをキャッシュしたい場合には、これは良いことです。新しいダウンロードを強制的に実行する場合は、no-cacheを設定します。これにより、毎回、キャッシュされたコピーを解放する前にキャッシュが強制的に元のサーバーに要求を送信して検証します。これは、認証が(公開との組み合わせで)尊重されること、またはキャッシュのすべての利益を犠牲にせずに厳格な新鮮さを維持するのに役立ちます。

HTTP Server-Specified Expiration - specs

+0

特定のJSファイルの有効期限付きHTTPヘッダーを設定するにはどうすればよいですか?デフォルトでは、有効期限は何ですか? – Dusty

+0

あなたのWebサーバーに設定する必要があります。だからそれはあなたが実行しているWebサーバー/バージョンに依存します:-) –

関連する問題