Как предотвратить кэширование результатов Ajax / javascript в браузерах? - PullRequest
9 голосов
/ 04 июня 2009

Как запретить браузерам кэшировать результаты Ajax? У меня Ajax-скрипт запускает событие, и результаты отображаются только после очистки данных браузера.

Протестировано в IE6 и Firefox 3.0.10

Ответы [ 5 ]

13 голосов
/ 04 июня 2009

Случайный URL работает, но это своего рода хак. HTTP имеет встроенные решения, которые должны работать. Попробуйте использовать решение , указанное здесь . В основном, установите заголовки:

"Pragma":            "no-cache",
"Cache-Control":     "no-store, no-cache, must-revalidate, post-check=0, pre-check=0",
"Expires":           0,
"Last-Modified":     new Date(0), // January 1, 1970
"If-Modified-Since": new Date(0)
11 голосов
/ 04 июня 2009

Добавьте произвольную строку запроса к URL-адресу, который вы отправляете.

например. если запрос Ajax отправляется на "http://www.xyz.com/a" затем добавьте случайную строку в конце: "http://www.xyz.com/a?q=39058459ieutm39"

9 голосов
/ 07 октября 2009

Я использовал метод jQuery {cache: false}, и он работал как шарм.

Полный пример кода выглядит так:

$.ajaxSetup({cache: false});
4 голосов
/ 04 июня 2009

используя jQuery, вы можете установить глобальные настройки ajax: {cache: false}. Смотрите в jquery ajax docs

4 голосов
/ 04 июня 2009

Мне известны две техники для этого.

  • Добавьте некую строку запроса к URL-адресу запроса AJAX, чтобы она всегда была уникальной. Отметка времени в миллисекундах (возможно, в сочетании со случайным значением) подходит для этого
  • Установить заголовки управления HTTP-кэшем в ответе AJAX, чтобы браузер не кэшировал его
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...