Как определить reload страницы на стороне сервера?

  • Автор темы Автор темы Bermuda
  • Дата начала Дата начала

Bermuda

Новичок
Как определить reload страницы на стороне сервера?

Необходимо определить на стророне сервера как была загружена страница. Точнее,я хотел бы знать, как определить то, что пользователь нажал F5 (обновить, reload) в браузере. По каким признакам можно это определить? Необходимо знать это для того, чтобы решать отдавать ли пользователю страницу из кэша или генерировать заново.
 
может быть у него реферер будет этой же страницы?
 
реферер будет тот же.

Bermuda, на сервере узнать, что нажал человек в браузере - нельзя. не передает браузер такой информации.
Браузер просто запрашивает страницу, и неважно, каким образом человек ее указао - на ссылку нажал, или адрес руками набрал, или ф5 нажал.

У тебя именно такой критерия отдачи из кэша?
Ты отдаешь из него ТОЛЬКО по ф5?
 
Автор оригинала: RomikChef
У тебя именно такой критерия отдачи из кэша?
а) Страница генерируется заново и кладется в кэш если:
- страницы нет в кэше
- истекло время жизни страницы в кэше
- размер закэшированной страницы меньше минимально допустимого (кривое кэширование при одновременном доступе нескольких пользователей или при отмене загрукзки страницы по Esc)
- юзер залогинен (принципиально нельзя кэшировать)
- в конфиге выставлен флаг "не кэшировать"
- получена GET переменная "не кэшировать"

б) Иначе страница отдается из кэша

Хэш страницы вычисляется

$hashe = md5(implode(" ", array_merge($_GET, $_POST)).$_SESSION["language"]);

Хотелось бы добавить еще одно условие регенерирования страницы - "пользовательский reload страницы"
 
- истекло время жизни страницы в кэше
ЭТО у тебя работает и на релоад.
 
Автор оригинала: RomikChef
- истекло время жизни страницы в кэше
ЭТО у тебя работает и на релоад.
Имелось в виду время жизни страницы в кэше на стороне сервера.

Речь идет о кэшировании динамических страниц на стороне сервера. Извиняюсь, что сразу не прояснил, просто самому это кажется очевидным, а уточнить я забыл.
 
а мне это тоже кажется очевидным.
И не вижу, что это меняет.

вроде бы, логика тут простая, как 2х2=4
и чего тебе тут не ясно до сих пор - сие недоступно уму моему.

узнать, КАК ИМЕННО юзер запросил страницу - не предсталвяется возможным.

Значит, у нас остается один способ - таймаут.
А этот способ у тебя и так уже реализован.

компрене ву?
 
учите протокол НТТР.
там есть все ответы.

кстати. Сейчас посмотрел на то, как вычисляется хэш.
массив пост там лишний.
 
Автор оригинала: RomikChef
Сейчас посмотрел на то, как вычисляется хэш.
массив пост там лишний.
Не лишний.
От этих данных база на сайте не меняется.
Таким образом при следующем аналогичном POST-е будет сгенерирована такая же страница. Если она такая же, то почему бы нам ее не закэшировать?
 
если данные не сервере не меняются, то и метод пост использовать не следует.
поскольку у юзера при обновлении будет выскакивать неприятная табличка, а при нажатии "назад" непонятный текст.
 
Автор оригинала: RomikChef
если данные не сервере не меняются, то и метод пост использовать не следует.
Ну, типа более секьюрно и т. д.


Автор оригинала: RomikChef
поскольку у юзера при обновлении будет выскакивать неприятная табличка, а при нажатии "назад" непонятный текст.
Здравая мысль здесь есть. Это идея. Надо подумать...

Действительно выгодно когда нужно сослаться на результаты поиска или результаты обработки другой формы, а в адресной строке ничего нет. Может вообще все GET-том пихать?
 
Автор оригинала: RomikChef
учите протокол НТТР.
там есть все ответы.
Учил. Много читал. Ответа на мой вопрос не нашел, так как он там даже не обсуждается. Но вопрос от этого не решился, потому и спросил. Вот если бы там было прямо написано, что "никаким образом нельзя узнать нажал ли юзер F5 или нет", то тогда бы Ваш совет был бы к месту. А еще кроме протокола есть браузер с разными языками на стороне клиента и с той стороны это можно решить, но это, на мой взгляд, изврат.
 
Ну, типа более секьюрно и т. д.
Ну, это секьюрность страуса, который прячет голову в песок.
Может вообще все GET-том пихать?
Совершенно верно.
Есть простое правило:
Если данные на сервере после отправки формы не меняются, то надо использовать GET. Ты верно подметил - во всех поисковых системах это так.
Если данные на сервере меняются, то:
1. Использовать метод POST
2. после обработки данных, сделать перенаправление (естественно, ГЕТом, постом сделать все равно невозможно), куда-нибудь, хоть на самого себя.
Это делается для того, чтобы исключить ненужные вопросы при нажатии кнопок "назад" и "обновить", а так же чтобы при обновлдении данные не слались повторно.
Учил. Много читал. Ответа на мой вопрос не нашел,
Дык. об том и речь - нету его там.
 
ЭЭ.
1. Если шлет If-modified-since: то или reload ткнул или второй раз на ту же страницу, а умный браузер перепроверяет.

2. Если шлет Cache-control то нажал <ctrl> Reload - имхо этот случай тебе и нужно ловить.

Есть два плагина под mozilla и msie - см. ссылки на http://ice.nice.ru/ - поизучай что передается, много вопросов исчезнет.
 
Автор оригинала: Альен
2. Если шлет Cache-control то нажал <ctrl> Reload - имхо этот случай тебе и нужно ловить.
Именно.

Автор оригинала: Альен
Есть два плагина под mozilla и msie - см. ссылки на http://ice.nice.ru/ - поизучай что передается, много вопросов исчезнет.
Спасибо. Помогло. IE шлет HTTP заголовок "Cache-Control: no-cache". Это частично решает вопрос. Альтернативным браузерам придется довольствоваться временем жизни страницы в кэше.
 
Сверху