Как обойти кэш Opera
При администрировании сайта у меня возник интересный вопрос. При добавлении новой статьи (см . главную страницу http://housekeeping.kulichki.com/) Firefox и IE ее показывают, а Opera показывает ранее закэшированную страницу. Как возможно это обойти? Статьи показываются динамически с помощью Perl скрипта.
Здравствуйте!
При администрировании сайта у меня возник интересный вопрос. При добавлении новой статьи (см . главную страницу http://housekeeping.kulichki.com/) Firefox и IE ее показывают, а Opera показывает ранее закэшированную страницу. Как возможно это обойти? Статьи показываются динамически с помощью Perl скрипта.
Здравствуйте!
При администрировании сайта у меня возник интересный вопрос. При добавлении новой статьи (см . главную страницу http://housekeeping.kulichki.com/) Firefox и IE ее показывают, а Opera показывает ранее закэшированную страницу. Как возможно это обойти? Статьи показываются динамически с помощью Perl скрипта.
Либо pragma: no-cache, либо динамичиская часть к url, типа url.ru/new/?nocache=h7fy3hn78fg3ig
У меня на сайте публикации тоже динамически отображаются - проблем с кэшом нет притом что заголовки:
header('Expires: Fri, 13 Jan 1984 16:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0',false);
header('Pragma: no-cache');
я вывожу только для режима администрирования.
С динамическим url у меня почему-то фишка не прокатила, пробовал :( А вот насчет
header('Expires: Fri, 13 Jan 1984 16:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0',false);
header('Pragma: no-cache');
хотел бы узнать побольше. Куда таковые директивы включать?
header('Expires: Fri, 13 Jan 1984 16:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
А для режима юзерфейса Last-Modified: какой берешь? Тоже текущую дату?
Куда таковые директивы включать?
Включать в любое место до вывода какой-либо информации в браузер.
Включать в любое место до вывода какой-либо информации в браузер.
Использовать Pragma: no-cache я вроде понял как:
print "Pragma: no-cache Content-Type: text/html\n\n";
- вначале скрипта (перед выводом на страницу).
Возникает два вопроса: 1. Правильно ли я это делаю?
2. Такая технология оправдана, если страница нагружена
графикой?(картинки браузер будет загружать снова и снова?)
Правда до меня (к моему стыду) не дошло как пользоваться
header('Expires: Fri, 13 Jan 1984 16:00:00 GMT');
...
header('Pragma: no-cache');
- такими штуками. Могу предположить это дело требует
подключение модулей. Если не сложно, то попрошу дать
небольшой примерчик страницы и скрипта, а лучше ссылку,
где можно познакомится основами всего этого дела.
Использовать Pragma: no-cache я вроде понял как:
print "Pragma: no-cache Content-Type: text/html\n\n";
- вначале скрипта (перед выводом на страницу).
Возникает два вопроса: 1. Правильно ли я это делаю?
Только сейчас обратил внимание на то, что речь идет про Perl. Pragma, Expires и прочие - все это заголовки, которые передаются браузеру. Потому все необходимые заголовки надо отсылать до вывода данных, а если точнее то до Content-Type. Все, что идет после него, расценивается как HTML (если контент-тайп соответсвующий).
Perl помню смутно, но скорее всего то, что тебе надо делается след. образом:
print "Pragma: no-cache\nExpires: Fri, 01 Jan 1980 12:00:00 GMT\nContent-Type: text/html\n\n";
Сомневеюсь только в том, чем отделяются заголовки - предполагаю, что одним \n.
2. Такая технология оправдана, если страница нагружена
графикой?(картинки браузер будет загружать снова и снова?)
Приведенные заголовки "говорят" браузеру не кэшировать страницу или об ее устаревании, стала быть все будет загружаться снова. Об оправданности подхода в вашей ситуации судить вам.
Могу предположить это дело требует
подключение модулей. Если не сложно, то попрошу дать
небольшой примерчик страницы и скрипта, а лучше ссылку,
где можно познакомится основами всего этого дела.
Подключения модулй не требуется. Просто ф-ия Header относится к PHP, а в Perl это print'ом делается.
Ссылку могу дать только на PHP-функцию Header - там есть примеры разных заголовков.