Я работаю над эсфорой с калькулятором, чтобы рассчитать ваш кредит. Мне нужно немного свежее представление об этом ... Представьте себе эту ситуацию:Проблема с кешированием JS/AJAX
- Пользователь нажимает на одну из кнопок, чтобы выполнить запрос POST (jQuery) и заполнить необходимые данные.
- Пользователь нажимает добавить в корзину и идет в корзину
- Пользователь нажимает назад кнопку (браузер)
Страница загружается, сервер заполняет данные в калькулятор (по умолчанию), но после того, его сделано, браузер заполняет данные JS из кеша, и происходит забавная вещь. Данные объединяются, и когда пользователь добавляет продукт в свою корзину, он ошибается, но действительная цена. Действительная часть - это то, что сервер заполняет, а остальное - из кеша.
Я попытался с помощью мета-теги, чтобы предотвратить кэширование, я сказал JQuery, чтобы не кэш запроса СТОЛБ и даже в моем ответчику, у меня есть несколько заголовков, которые говорят - не кэшировать. Тем не менее данные POST становятся кэшированными, и я понятия не имею, как отключить его или обновить или что-то еще ... Когда я смотрю на заголовки, которые возвращаются с данными json, заголовок истекает, установлен на год 2099, даже хотя я сказал, что это должен быть год от прошлого. Кроме того, я действительно не знаю, что может быть причиной этой проблемы.
Вот заголовки, установленные в респондентом и что получает ответ:
header("Expires: Mon, 26 Jul 1999 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: text/x-json");
Это получает обратно (от поджигатель):
Date Fri, 17 Sep 2010 08:39:38 GMT
X-Powered-By PHP/5.1.6
Connection Keep-Alive
Content-Length 126
Pragma no-cache
Last-Modified Fri, 17 Sep 2010 08:39:38GMT
Server Apache
Content-Type text/x-json
Cache-Control no-cache, must-revalidate
Expires Mon, 26 Jul 2099 05:00:00 GMT
Примечание: когда я отключить кэш в настройках браузера она работает как Шарм.
Любые идеи приветствуются!
Edit:
Я попытался фиктивными несколько часов раньше, но то не решить. Проще говоря, вся проблема в том, что когда пользователь нажимает кнопку «назад», обновляется страница , но ее чтение из кеша или, по крайней мере, данные, поступающие из ajax, кэшируются и заполняются.
Так что в основном мне нужно обновить страницу умным способом, когда пользователь нажимает кнопку «Назад». Обратите внимание, что файлы cookie не являются опцией, потому что (возможно, небольшой процент, но все же) некоторые люди не имеют разрешенных куки.
'header (« Истекает: понедельник, 26 июля 2099 05:00:00 GMT »);« это очень похоже на меня, как будто вы устанавливаете время истечения срока действия именно для того, что вы видите в Firebug, и вы «не устанавливая его на несколько лет в прошлом. – Matt
lol, вы были правы, но это все еще не решило мою проблему. Когда я щелкнул назад, данные все еще были кэшированы ... – realshadow