Кеширование страниц браузером. Как отключить?

dandandan

Мой дом здесь!
Регистрация
7 Авг 2008
Сообщения
1.036
Реакции
292
Есть сайт - инет магазин. Прохожусь по страницам (кешируются браузером), затем добавляю товар в корзину. В блоке корзины показывается количество товара. Возвращаюсь к страницам, по которым уже прошелся и браузеры берут данные из кеша. Соответственно пользователи думают, что их товары потерялись.

Сначала включил заголовки:
PHP:
	// Date in the past 
	header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
	header("Expires: 0"); 
	// always modified 
	header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
	// HTTP/1.1 
	header("Cache-Control: no-store, no-cache, must-revalidate"); 
	header("Cache-Control: post-check=0, pre-check=0", false); 
	// HTTP/1.0 
	header("Pragma: no-cache");
Не помогло. При нажатии на F5 данные не обновлялись. Если же заходил на новую страницу, то появлялись адекватные данные. Алгоритм работы всех страниц - идентичный. Сайт - самопис.

Далее добавил к заголовкам:
PHP:
header("HTTP/1.0 200 OK");			
header("Status: 200 OK");
Страницы все равно кешируются, однако, если нажать F5 на клавиатуре, то браузер показывает адекватную страницу.

Что еще можно добавить? Сайт на виртуальном хостинге.
 
Гораздо проще и надежнее добавлять некий рендомный гет запрос - на стороне сервера обрабатывать его не обязательно, а для браузера это будет новой страничкой и кеширования не будет.
 
Т.е. предлагаете в урд добавить доппараметр в виде рандомной строки? урл?rnd=blabla Так ?
 
да, именно так - однако может не сработать если посетитель нажмет "назад" в браузере

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

Хорошо. Буду думать над случайной переменной, если никто больше других идей не предложит.
 
случайно на ajax нет плагина history ? тк он у клиента сохраняет, и потом подгружает
отрубить кеш даже если жмет назад можно только ajax.

насчет рандомной переменной, верно, обычно так генерят скрипты, картинки и стили. но страницы тоже можно, но главное тут под АГС не попасть с переусердсоваванием.

так же

 
На ajax такого плагина нет. Была еще мысль делать аякс запрос, чтобы узнать колво товаров после загрузки страницы.

Меня сегодня чуть не порвали с этим магазом :) Подействовало продвижение в поисковиках. В результате в корзине больше 100 товаров лежит. А заказано не более 10. Обычно каждый 4-5 товар оформляют на покупку. А потом примерно 10% от оформивших оплачивает.
 
еще если на ломакальном серваке все ровно то может криво настроен nginx
тут надо думать как с ним боротся или перезжать.
 
на сколько знаю nginx вообще нет. По крайней мере год назад когда переезжал с mchost на hostgator , nginx у них не было. Говорили только, что на ВПС или ВДС можно самому поставить.
 
PHP:
if ( isset( $_SERVER['SERVER_PROTOCOL'] ) && strstr( $_SERVER['SERVER_PROTCOL'], '/1.0' ) )
{
    header( 'HTTP/1.0 200 OK' );
}
else
{
    header( 'HTTP/1.1 200 OK' );
}
header( 'Expires: 0' );
header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );
header( 'Pragma: no-cache' );
не видел, чтобы вышеуказанный код где-то не работал :)
 
Назад
Сверху