4

アプリケーションで JS モジュールを要求するために、require.js を使用しています。

別の要求された URL を使用して、新しい JS モジュールのクライアント キャッシュを破棄する方法が必要です。

つまり、ファイルhello/there.jsが既にクライアントにキャッシュされている場合は、ファイル名を変更して、ブラウザーに強制的に新しいファイルを取得させることができます。

つまり、モジュールの場合、クライアントでアクセス可能なバージョン文字列に従ってhello/there、require.js に URL を要求してもらいたいhello/there___v1234___.js(ファイル名は異なる場合があります。これは単なる例です)。

それを達成するための最良の方法は何ですか?

4

4 に答える 4

4

私は urlArgs ソリューションに本当に不満を感じ、最終的にあきらめて、独自の修正を require.js に直接実装しました。ライブラリのバージョンを変更する意思がある場合、この修正により理想的なソリューションが実装されます。

ここでパッチを見ることができます:

https://github.com/jbcpollak/requirejs/commit/589ee0cdfe6f719cd761eee631ce68eee09a5a67

追加したら、必要な構成で次のようなことができます。

var require = {
    baseUrl: "/scripts/",
    cacheSuffix: ".buildNumber"
}

buildNumberビルド システムまたはサーバー環境を使用して、リビジョン ID またはソフトウェア バージョンに置き換えます。

次のように require を使用します。

require(["myModule"], function() {
    // no-op;
});

このファイルを要求する必要があります。

http://yourserver.com/scripts/myModule.buildNumber.js

パッチはプロトコルを指定するスクリプトを無視し、JS 以外のファイルには影響しません。

サーバー環境では、URL 書き換えルールを使用して buildNumber を取り除き、正しい JS ファイルを提供します。このようにして、実際にすべての JS ファイルの名前を変更することを心配する必要はありません。

これは私の環境ではうまく機能しますが、一部のユーザーはサフィックスよりもプレフィックスを好むことを認識しています。ニーズに合わせてコミットを簡単に変更できるはずです。

重複する可能性のあるいくつかの質問を次に示します。

RequireJS とプロキシ キャッシング

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

于 2014-02-07T04:16:55.943 に答える