web-dev-qa-db-ja.com

ブラウザは外部JavaScriptファイルのキャッシュを自動的にクリアしますか?

JavaScriptリソースがあり、いつでも編集できる可能性があります。編集したら、比較的迅速に(おそらく15分程度)ユーザーのブラウザに伝達したいと思いますが、このリソースを編集する頻度はほとんどありません(1か月に2回程度)。

リソースは頻繁に取得されるので、むしろブラウザにキャッシュされますが、ブラウザでキャッシュが半定期的にリセットされるようにしたいです。

リソースを要求するときにキャッシュなしヘッダーを渡すことができることは知っていますが、キャッシュなしを渡さなかった場合、ブラウザーでキャッシュが自動的にリセットされるのはいつかと思っていました。

これはブラウザごとに独立すると思いますが、よくわかりません。

これをグーグルで試しましたが、見つかったヒットのほとんどはブラウザのキャッシュをクリアすることでした...これは私が探しているものではありません。

50
Elijah Manor

バージョン文字列をgetタグとしてスクリプトタグのURLに渡すことができます。パラメーターは静的JavaScriptファイルによって評価されませんが、ブラウザーに新しいバージョンを強制的に取得させます。

ソースを編集するたびにバージョン文字列を割り当てたくない場合は、ファイルシステムのタイムスタンプまたはSubversionコミット番号に基づいて計算できます。

<script src="/script.js?time_stamp=1224147832156" type="text/javascript"></script>
<script src="/script.js?svn_version=678" type="text/javascript"></script>

53
aemkei

変更を行うと更新されるこのようなJavaScriptコードにバージョンを追加します

<script src="/code.js?ver=123" type="text/javascript"></script>

その後、常に新しいバージョンが取得されます。

14
Craig

HTTPは、ブラウザがさまざまな方法で無視するキャッシュの制御をいくつか提供します。適切な有効期限を設定すると、ほとんどのブラウザは、現在のバージョンが適切な頻度であるかどうかを確認します。

ここに含めたい検索用語は(ブラウザのユーザー指示を避けるため)HTTPです。

詳しくは:

13
acrosman