Кеширование (устранение проблемы устаревшей страницы)

Статус
В этой теме нельзя размещать новые ответы.

Anatoliy2004

Новичок
Кеширование (устранение проблемы устаревшей страницы)

Всегда после обработки формы делал location, чтобы избежать проблемы back (страница устарела). Не очень то это мне нравилось, так как приходилось жертвовать дружелюбными сообщениями типа: "Информация успешно обновлена"

Сегодня случайно наткнулся на такой вариант кешированя:

PHP:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: private");
Работает следующим образом: кеширует только переключение back||forward (соответственно проблема с устаревшей страницой устраняется), при переходе по ссылкам выдается новая информация. Да и что грузить сервер новыми запросами, когда пользователь нажимая на кнопку "назад" все равно не нуждается в обновленной информации.

Все бы хорошо, да вот что-то меня такой вариант настораживает. Нигде о нем не слышно, да и мало кто использует.
Может подводные камни какие-нибудь есть? Или может догадки какие есть у кого-нибудь?
 

Фанат

oncle terrible
Команда форума
Не очень то это мне нравилось, так как приходилось жертвовать дружелюбными сообщениями типа: "Информация успешно обновлена"
Не вижу проблемы.
почему нельзя сделать локейшен на страницу с этим самым текстом?
Работает следующим образом: кеширует только переключение back||forward (соответственно проблема с устаревшей страницой устраняется
Это больше похоже на сказку.
проблема (страница устарела) никакого отношения к кэшированию не имеет, и никаким кэшированием не решается.
 

Anatoliy2004

Новичок
Автор оригинала: Фанат
Не вижу проблемы.
почему нельзя сделать локейшен на страницу с этим самым текстом?
Можно, конечно, дописывать ?update=ok или что-нибудь в этом духе, а потом проверять и если $update=ok - выводить сообщение, но я в основном ЧПУ использую - не хочется больно то портить чистые URLы.

Это больше похоже на сказку.
проблема (страница устарела) никакого отношения к кэшированию не имеет, и никаким кэшированием не решается.
Почему? Разве "страница устарела" возникает не при попытке обращения к странице на которую $_POST данные передавались? А в данном случае просто выводится результат обработки той страницы из кеша.
 

che

Guest
Originally posted by Anatoliy2004
при попытке обращения к странице на которую $_POST данные передавались?
...Передавать данные повторно? Или что-то в этом роде. Спрашивает бродилка.
 

Breeze

goshogun
Команда форума
Партнер клуба
но я в основном ЧПУ использую - не хочется больно то портить чистые URLы.
для поисковиков небось? а они вроде еще не научились формы заполнять и отправлять..

в сессию запиши ;)
 

Anatoliy2004

Новичок
Автор оригинала: Breeze
для поисковиков небось? а они вроде еще не научились формы заполнять и отправлять..

в сессию запиши ;)
Не научились, но и не совсем это дело результаты выдавать простым ГЕТом.

А в сессию тогда проще уж XML результат обработки записать, потом location, обрабатываем XML, выводим. Но сессии использовать только ради таких сообщений....
 

Фанат

oncle terrible
Команда форума
$update=ok - выводить сообщение, но я в основном ЧПУ использую - не хочется больно то портить чистые URLы.
не понял.
почему нельзя передавать на урл /update/ok?
Какие-то все проблемы выглядят высосанными из пальца.
Такое ощущение, что я уже уговаривать начинаю человека, решить свою собственную проблему, и капризничает, выдумывая какие-то фантастические препятствия.
А в данном случае просто выводится результат обработки той страницы из кеша.
А при нажатии F5 что выводится?
 

Breeze

goshogun
Команда форума
Партнер клуба
но и не совсем это дело результаты выдавать простым ГЕТом
шашечки или ехать?

а про сессию эт я просто не удержался :)

сделай спецЧПУ, который преобразуй в гет
 

Anatoliy2004

Новичок
Автор оригинала: Фанат
Такое ощущение, что я уже уговаривать начинаю человека, решить свою собственную проблему, и капризничает, выдумывая какие-то фантастические препятствия.
Решения то проблемы известны и есть в вопросах-ответах. Цель данной темы была обсудить новый вариант ее решения.

Автор оригинала: Фанат
А при нажатии F5 что выводится?
Запрашивает повторную отправку данных
 

Фанат

oncle terrible
Команда форума
Запрашивает повторную отправку данных
И это называется решением проблемы?
НЮ-НЮ.
А в данном случае просто выводится результат обработки той страницы из кеша.
А если я скажу, что это не так?
 

Anatoliy2004

Новичок
Автор оригинала: Фанат
И это называется решением проблемы?
НЮ-НЮ
Действительно, полным решением не назовешь. Работает только для Back

А если я скажу, что это не так?
И что же не так?


Кстати, насчет location: если при ошибке заполнения полей я хочу вывести сообщения о том, что именно неправильно заполненно, то как это сделать? Не будешь же добавлять для каждого поля ?login=err&mail=err....... К тому же записью login=err просто не обойдешься. Бывают разные типы ошибок, например вообще не заполненно или есть недопустимые символы. Может есть какой-то простой выход?
 

Фанат

oncle terrible
Команда форума
И что же не так?
выводит стандартную надпись (страница устарела), несмотря на эты хитрые заголовки
Кстати, насчет location: если при ошибке заполнения полей я хочу вывести сообщения о том, что именно неправильно заполненно
то location: делать не надо, а надо просто вывести заполненную форму и смообщения об ошибках.
Это противоречит правилу обязательного локейшена, и поэтому, если уж так хочется его соблюсти, то писать заполненные поля в сессию.
 

Anatoliy2004

Новичок
Автор оригинала: Фанат
выводит стандартную надпись (страница устарела), несмотря на эты хитрые заголовки
Выводит при back или при refresh???? Лично у меня при вперед||назад выводит из кеша, а при refresh, действительно спрашивает, отправлять ли данные повторно.
 

Фанат

oncle terrible
Команда форума
Anatoliy2004
Если серьезно, то ответ на твой вопрос очень прост.
мало кто использует.
потому, что нет никакой гарантии в том, как поведет себя браузер.
 

Anatoliy2004

Новичок
Автор оригинала: SiMM
Какая разница, если как ты сам заметили решением это не назовёшь?
Ну это смотря где использовать. Каждый должен выбрать для себя и своих пользователей оптимальный вариант сам.

Мне лично проще не смешивать формы и какие-то данные. На странице, где расположена только одна форма - какой смысл жать F5? А back и forward при всем этом работать будет (но с этими "магическими" заголовками это еще надо потестировать). К тому же, если использовать этот вариант, пользователь сможет вернуться назад и посмотреть что он там назаполнял в случае ошибки.

Кому-то проще забить на подсвечивание ошибочных строк и на "дружелюбные" сообщения, либо юзать сессии.

А на самом деле ИМХО пользователи приучены к тому, чтобы лишнего не жать F5 там где не надо. Взять например авторизацию в Яндексе или на mail.ru. Да даже при регистрации на данном форуме, например, если обнаружена ошибка в заполнении, при F5 вылазиет повторная отправка данных.
 

Фанат

oncle terrible
Команда форума
К тому же, если использовать этот вариант, пользователь сможет вернуться назад и посмотреть что он там назаполнял в случае ошибки.
ты совсем запутался.

Остальное - вообще смешно слушать. "Пользователи приучены, пользователи думают."
При таких допущениях непонятно, зачем ты вообще таким вопросом задался. придумай себе воображаемых юзеров, и пиши под них.
 

Anatoliy2004

Новичок
Я ни в чем не запутался.

>>"Пользователи приучены, пользователи думают."

Просто надо оценивать реальную обстановку
 

Фанат

oncle terrible
Команда форума
Я ни в чем не запутался.
Если ты думаешь, что я буду тебя уговаривать - ты очень сильно ошибаешься.
Просто надо оценивать реальную обстановку
так ты уже оценил
Нигде о нем не слышно, да и мало кто использует.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху