単一の JavaScript ファイルを 1 時間キャッシュし、以下のコードを使用してそれを実現します。何らかの理由で (その js ファイルが非同期で読み込まれるためかもしれません)、js ファイルがキャッシュにある場合、その js ファイルの関数は IE8 で実行されません。したがって、IE を除くすべてのブラウザで js ファイルをキャッシュしたいと考えています。IE ブラウザのみ js ファイルがキャッシュされないようにヘッダーを設定できますか?
try {
response.setHeader("Cache-Control", "max-age="+AIMConstants.CACHE_CONTROL_TIME_PERIOD);
} catch (Exception e) {
logger.info("Error in setting the cache control");
e.printStackTrace();
}
注: js ファイルは、getScript 呼び出しを介してページに複数回ロードされています。そのため、変数をファイルに追加してその js ファイルを取得するために IE のみに条件付きロジックを適用すると、ファイルが複数回読み込まれる可能性があるため、クライアント側でランダム変数を追加して新しいコピーを取得しないのはそのためです。 JavaScriptファイルの. ヘッダー ディレクティブを使用してこれを解決したいと考えています。JavaScript を含むその他のソリューションも歓迎します。
更新: js ファイルのキャッシュを防ぐために Vary:* を追加しました。これを行うと、すべてのブラウザーが js ファイルの新しいコピーを取得します。毎回 js ファイルの新しいコピーを取得するのは IE だけです。他のすべてのブラウザーは、js ファイルをキャッシュできます。