RequireJS が必要なスクリプトをキャッシュしないようにする 質問する

RequireJS が必要なスクリプトをキャッシュしないようにする 質問する

RequireJS は、必要な JavaScript ファイルをキャッシュする内部的な処理を行っているようです。必要なファイルの 1 つに変更を加えた場合、変更を適用するにはファイルの名前を変更する必要があります。

ファイル名の末尾にクエリ文字列パラメータとしてバージョン番号を追加するという一般的なトリックは、requirejsでは機能しません。<script src="jsfile.js?v2"></script>

私が探しているのは、スクリプト ファイルが更新されるたびに名前を変更することなく、RequireJS に必要なスクリプトの内部キャッシュを防ぐ方法です。

クロスプラットフォームソリューション:

現在、urlArgs: "bust=" + (new Date()).getTime()開発中は自動キャッシュバスティングに使用し、urlArgs: "bust=v2"実稼働時には更新された必須スクリプトを展開した後にハードコードされたバージョン番号を増分しています。

注記:

@Dustin Getz は最近の回答で、このように JavaScript ファイルが継続的に更新されると、Chrome デベロッパー ツールはデバッグ中にブレークポイントを削除すると述べています。回避策の 1 つは、debugger;ほとんどの JavaScript デバッガーでブレークポイントをトリガーするコードを記述することです。

サーバー固有のソリューション:

Node や Apache などのサーバー環境に適した特定のソリューションについては、以下の回答を参照してください。

ベストアンサー1

RequireJS は、キャッシュ無効化のために各スクリプト URL に値を追加するように構成できます。

RequireJSのドキュメントから(config は、以下の URL から参照できます。):

urlArgs : RequireJS がリソースを取得するために使用する URL に追加される追加のクエリ文字列引数。ブラウザまたはサーバーが正しく構成されていない場合にキャッシュを破棄するのに最も役立ちます。

すべてのスクリプトに「v2」を追加する例:

require.config({
    urlArgs: "bust=v2"
});

開発目的では、タイムスタンプを追加することで RequireJS にキャッシュをバイパスするように強制できます。

require.config({
    urlArgs: "bust=" + (new Date()).getTime()
});

おすすめ記事