JQuery и скрипт кеширования - PullRequest
       6

JQuery и скрипт кеширования

0 голосов
/ 06 августа 2010

Я испытываю довольно странное поведение в JQuery.

Я динамически загружаю серию скриптов, используя этот код:

for (var i=0; i<requiredScripts.length; i++)
    {
    $.ajax({
        url: baseURL+"js/"+requiredScripts[i],
        async: false,
        dataType: 'script',
        success: checkLoaded
        });
    }

Функция checkLoaded просто увеличиваетсчетчик, так что, когда все сценарии были загружены, он выполняет определенные функции.

Все работало нормально, пока я не загрузил более новую версию одного из загруженных сценариев.JQuery, похоже, продолжает загружать старый.Я попытался обновить (и принудительно обновить) страницу напрасно ...

Поэтому я отключил кэш (с панели инструментов WebDeveloper), и теперь скрипт волшебным образом загружается.Но когда я снова включил кеш, старый скрипт вернулся ...

Я дошел до удаления файла с сервера, и это ничего не сделало!(если я не отключу кеш, то есть.)

Я уверен, что просто упускаю что-то действительно простое, но я не мог понять это.

Заранее спасибо всем, ктоможет помочь.

РЕДАКТИРОВАТЬ : просто чтобы уточнить, я хочу, чтобы файл был кэширован.Я не понимаю, почему принудительное обновление страницы не приводит к получению нового скрипта.

Также обратите внимание, что это происходит только в том случае, если я загружаю файлы с помощью JQuery, если я добавляю их вручную вПри принудительном обновлении HTML загружается новая страница.

EDIT # 2 : решается путем удаления кэша из FF.Тем не менее, не понимаю, почему CTRL + SHIFT + R не добились цели ...

Ответы [ 3 ]

2 голосов
/ 06 августа 2010

$. Ajax имеет опцию кэширования, которая делает то же самое, что и ответ mck89, но немного аккуратнее:

$.ajax({
    url : 'example.com',
    cache : false,
    ....
});
1 голос
/ 06 августа 2010

Вы можете просто использовать классический метод отключения кэширования.

var cd=+new Date();
for (var i=0; i<requiredScripts.length; i++)
    {
        $.ajax({
            url: baseURL+"js/"+requiredScripts[i]+"?"+cd,
            async: false,
            dataType: 'script',
            success: checkLoaded
            });
    }

Таким образом, URL-адрес скрипта всегда отличается, и вы уверены, что его содержимое не кэшируется.

0 голосов
/ 06 августа 2010

Скажите apache отправленным заголовкам без кэширования для ваших файлов JS:

<Directory "/path/to/baseURL/js">
    Header Set Cache-Control "max-age=0, no-store"
</Directory>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...