2013-04-16 80 views
0

我有一個JavaScript文件通過jQuery.getScript在客戶端加載,我設置緩存控制標題與服務器端1小時瀏覽器緩存。它看起來像IE緩存ajax請求,文件中存在的功能不會在IE中執行。在getScript調用中設置false是否會覆蓋從服務器端設置的1小時的緩存控制標頭?IE緩存阿賈克斯請求不會執行JavaScript函數

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

      $.getScript('thatjsfileurl', function() { 
      $("#welcome").pluginInit({ 
       start:'newPage' 
      }); 
      initialized = true; 
      },jsCache); 
     } 

注意:還有Akamai,所以無法在servlet端設置瀏覽器檢測代碼。

回答

0

我想通過測試我發佈的上述代碼自己回答。當我們將變量設置爲高速緩存時,服務器端標頭變量(如緩存控制:1小時等)將被瀏覽器覆蓋。每當緩存設置爲false時,IE瀏覽器都會從服務器獲取新副本。

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

      $.getScript('thatjsfileurl', function() { 
      $("#welcome").pluginInit({ 
       start:'newPage' 
      }); 
      initialized = true; 
      },jsCache); 
     } 
1

根據jQuery doc for getScriptgetScript()調用沒有緩存設置參數,因此您對jsCache變量沒有做任何處理。

您可以在URL中添加時間戳編號並繞過任何IE緩存。

if(!initialized) { 
     $.getScript("thatjsfileurl" + "?now=" + new Date().getTime(), function() { 
      $("#welcome").pluginInit({ 
       start:'newPage' 
      }); 
      initialized = true; 
     }); 
    }