jQuery: Отключаем кэширование AJAX-запросов

2010-11-23

В некоторых веб-браузерах жестко кэшируются AJAX-запросы. Иногда это хорошо, если предполагается, что ответы сервера меняются довольно таки редко, но чаще всего — это очень плохо и доставляет много головной боли веб-разработчикам.

В частности такая погрешность была замечена в Internet Explorer при использовании метода $.getJSON.

Но решить эту проблему очень просто. Нужно всего лишь отключить кэш в настройках AJAX-запросов jQuery.
Необходимо установить следующую строчку перед выполнением асинхронных запросов к серверу:

$.ajaxSetup({cache: false});

Альтернативный вариант для веб-разработчиков, которые не используют jQuery — это добавлять в конец URL-адреса сервера дополнительный GET-параметр, который ни на что не влияет, но имеет всегда разное значение. Таким значением может быть случайное число или текущая дата c временем в миллисекундах. Таким образу веб-браузер будет «думать», что он всегда обращается по новому адресу, и по-этому не будет брать с кэша устаревшие результаты.

Пример:

ajaxURL += "&noCache=" + (new Date().getTime()) + Math.random();



7 комментариев на «jQuery: Отключаем кэширование AJAX-запросов»

  1. Костя:

    Даже в jQuery я использую альтернативный вариант, мне кажется, так проще :)

  2. Денис:

    спасибо! то что нужно!

  3. Андрей:

    ок. альтернативный вариант . спасибо

  4. Павел:

    Спасибо!! 1.5 часа на поиски причины, и 10 секунд на поиск вашего решения!

  5. Кэш:

    альтернативный вариант… потом кэш забивается кучей всякой херни…

  6. admin:

    Он и так забивается много чем, и Вас это не должно волновать. Пусть об этом думают разработчики браузеров.

  7. Артём:

    Неплохо неплохо, вроде всё просто и понятно спасибо!

Добавить комментарий