Как предотвратить результат Ajax/javascript, кэширующийся в браузерах?

$(( ... )) это просто выражение. Его результат появляется там, где bash ожидает команду.

POSIX-совместимым решением было бы:

if [ "$(( RANDOM % 2))" -ne 0 ]; 

, но поскольку RANDOM также не определено в POSIX, вы также можете использовать правильную команду bash для задания: арифметика составная команда оценки:

if (( RANDOM % 2 )); then
9
задан Babiker 4 June 2009 в 06:19
поделиться

5 ответов

Добавьте случайную строку запроса к отправляемому URL.

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

11
ответ дан 4 December 2019 в 06:17
поделиться

Случайный 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)
13
ответ дан 4 December 2019 в 06:17
поделиться

Я знаю два метода для этого.

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

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

4
ответ дан 4 December 2019 в 06:17
поделиться

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

Полный пример кода выглядит следующим образом:

$.ajaxSetup({cache: false});
9
ответ дан 4 December 2019 в 06:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: