Кэширование PHP Ajax для IE7 и iE8 - PullRequest
2 голосов
/ 08 октября 2009

У меня есть приложение, написанное на PHP / Javascript, которое широко использует AJAX. Я обеспокоен тем, что режим кэширования по умолчанию для IE7 и IE8, установленный для нашей организации - «Автоматически», будет мешать моему приложению.

Приблизительно 1500 пользователей, и мой ИТ-отдел говорят, что они не изменят параметр кэширования в IE для всех этих пользователей.

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

Кроме того, как я могу гарантировать, что AJAX всегда будет приносить свежие результаты? Действительно ли мне нужно делать все свои URL уникальными для каждого звонка?

Похоже, в интернете довольно много неопределенности по этой теме. Должен быть окончательный ответ, который всегда работает.

Дополнительные вопросы

Почему бы просто не настроить заголовки HTTP в файлах AJAX?

Кроме того, откуда мне знать, что эти решения действительно работают? Какова правильная процедура тестирования поведения кэширования?

Ответы [ 5 ]

3 голосов
/ 08 октября 2009

Если вы собираетесь добавлять уникальный идентификатор в кеш в конец каждого запроса, не используйте rand. Вместо этого используйте текущую дату / время (в мс). Это гарантирует уникальность, также более удобную для отладки.

1 голос
/ 08 октября 2009

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

header("Cache-Control: no-cache, must-revalidate");
header('Pragma: no-cache');

Также, возможно, передать номер ранда и или время () в строке запроса?

0 голосов
/ 20 июля 2010

С помощью jQuery вы можете добавить дополнительный параметр, чтобы избежать кеширования следующим образом:

$.getJSON(myUrl, {"no_cache": new Date().getTime()}, function(data) {
// do something
}


$.getJSON(myUrl, {"no_cache": new Date().getTime()}, function(data) {
// do something else
}
0 голосов
/ 08 октября 2009

Вместо этого используйте запрос POST, поскольку данные на сервере явно изменяются (иначе у вас не будет проблем с кэшированием). Смотри http://javascript.about.com/od/ajax/a/ajaxgp.htm

0 голосов
/ 08 октября 2009

создание уникального URL-адреса не требует больших затрат. Вам просто нужно добавить случайное число в конец URL. В случае запросов GET вы можете сделать это следующим образом

/someresource.php?some_key=foo&no_cache=9832742938642

Вы можете просто игнорировать пару значений rand key в любом скрипте, обрабатывающем запрос.

Насколько я знаю, это единственный вариант, который у вас есть.

...