3

全体でrequire.jsを使用するWebアプリがあります(CDNが提供するいくつかのリソースを除く)。最適化ツールを使用して「公開」サイトを作成しています。

私の懸念は、Web アプリの新しいバージョンが公開されたときに、ブラウザーによってキャッシュされるため、ユーザーが更新された js ファイルを取得できないことです。

この問題は、「urlArgs」構成オプションを使用しない限り、アプリの開発時に非常に明白です。

通常の解決策は、スクリプト参照に ?v=1.0 のクエリ文字列を追加することですが、それらはすべて require.js を介して処理されるため、これを行う方法はありません。

それで、私の質問は、新しいバージョンが公開されたときにクライアントが新しいバージョンの js/css ファイルをダウンロードできるようにするにはどうすればよいですか?

4

1 に答える 1

1

require.js を使用している場合は、require オブジェクトを使用する前に「バスト」urlArgs を設定する必要があります。そのようです:

<script>
    var require = {
        urlArgs : "bust=" + releaseVersion
    };
</script>

CSSと画像についても同様の状況にありました。Web アプリが Apache の背後にある場合は、mod_headers モジュールで cache-control ヘッダーを http 応答に設定できます。私の場合、Web アプリは Apache の背後にありません。グラスフィッシュを直撃。そのため、最終的にサーブレット フィルターを追加し、フィルター チェーンに転送する前に、キャッシュ制御ヘッダーを各 CSS とイメージ レスポンスに手動で追加しました。その後、CSS の変更があるたびに、次のように HTML に url パラメーターを追加するだけです。

<... "main.css?version=release10" />

ブラウザーはこの URL の変更を認識し、サーバーから CSS をフェッチします。画像も同様です。JS の場合、「バスト」値を更新する必要があります。

于 2012-10-19T18:55:45.340 に答える