0

単一の 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 ファイルをキャッシュできます。

4

1 に答える 1

0

このコードは、IE ブラウザーに対してのみ、サーバーから毎回新しいコピーを取得します。

var jsCache = true;
        if($.browser.msie){
            jsCache = false;
        }
            if(!initialized){

                $.getScript('thatjsfileurl', function() { 
                 $("#welcome").pluginInit({
                    start:'newPage'
                 });  
                 initialized = true;
                },jsCache);
            }
于 2013-04-26T20:16:43.397 に答える