2013-04-12 3 views
0

Я хочу, чтобы один файл javascript был кэширован в течение 1 часа и использовал приведенный ниже код для достижения этого. По какой-то причине (возможно, потому, что этот js-файл загружается асинхронно), функции в этом js-файле не выполняются в IE8, когда файл js находится в кеше. Поэтому я хочу кэшировать файл js во всех браузерах, кроме IE. Могу ли я установить заголовок, чтобы файл js не кэшировал только для браузеров IE?файлы кеширования кросс-браузера

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. Поэтому, если я применяю условную логику только для IE, чтобы извлечь этот файл js, добавив переменную в файл, файл может быть загружен несколько раз, поэтому я не добавляю случайную переменную на стороне клиента, чтобы получить новую копию файла javascript. Я хочу разрешить это, используя директивы заголовка. Также приветствуется любое другое решение, включающее javascript.

UPDATE: Я добавил Vary: *, чтобы предотвратить кэширование js-файла, и когда я делаю это, все браузеры берут новую копию js-файла. Я хочу, чтобы только IE получал новую копию js-файла каждый раз. Все остальные браузеры могут кэшировать js-файл.

+0

Добавьте ту же «случайную» переменную ко всем вызовам GetScript на странице. Затем он будет кэшироваться внутри страницы, но не через загрузку страниц. –

ответ

0

Этот код восстанавливает новую копию с сервера каждый раз только для браузера IE.

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

       $.getScript('thatjsfileurl', function() { 
       $("#welcome").pluginInit({ 
        start:'newPage' 
       }); 
       initialized = true; 
       },jsCache); 
      } 
Смежные вопросы