Вы не авторизированы! Логин:  Пароль:  Запомнить:    Зарегистрироваться
Забыл пароль
 
 
 

Кеширование в PHP 2

SVD programming - Программирование Delphi, HTML, PHP, CGI. Обзоры софта, ReactOS и многое другое...
 
Главная - Новости - Публикации - Файлы - Ссылки - Форум Обратная связь
 


Друзья сайта ::

Сайтом управляют ::

Друзья сайта ::
PHP » Кеширование в PHP 2
Автор: Кузин Андрей / Дата: 10:52 09.04.2006
Комментарии: Комментарии (0)
Рейтинг статьи: 0
Во времена "статического" Интернета, которые местами еще не закончились, кеширование страниц приносило экономию трафика и быстроту работы. Прокси-сервера провайдеров делали работу в Интернете быстрее. Сегодня ситуация поменялась кардинально, часто функции кеширования в браузерах и прокси-серверах только мешают нормальной работе.

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

Зато практически со 100% уверенностью можно сказать браузеру и прокси о том, что страницу не стоит куда-либо сохранять. Для этого в протоколе HTTP есть несколько полей заголовка:

Expires - время жизни страницы;
Last-Modidied - дата последнего изменения;
Cache-Control - параметры управления кешем;
Pragma - тоже самое для версии 1.0;

Подбирая значения этих полей можно управлять процессом кеширования страницы. Например, если дата последнего изменения страницы Last-Modified меньше, чем ее время жизни Expires, то браузер посчитает весьма закономерным поместить эту страницу в кеш. Если мы насильно поменяем значения этих полей, чтобы такое сравнение больше не проходило, то браузер перестанет кешировать эту страницу. Для вывода заголовков HTTP в PHP существует специальная функция header(), в описании которой в качестве примера приведен именно процесс контроля кешем:

Код:
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// 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");
?>


Если Вы будет вставлять этот код в начало каждого PHP файла, то он не будет кешироваться.

Этот код на Internet Explorer действует безотказно, зато почему-то не всегда на Opera и Firefox, возможно и на другие браузеры. Алгоритм их работы не всем известен, и возможно они игнорируют некоторые поля в заголовках ответов HTTP. Тогда в таком случае можно попробовать продублировать эти настройки в коде HTML.

Например можно создать такой код:

Код:
<?php
echo "<meta http-equiv="cache-control" content="no-store, no-cache, must-revalidate">";
echo "<meta http-equiv="expires" content="Mon, 26 Jul 1997 05:00:00 GMT">";
echo "<meta http-equiv="last-modified" content="". gmdate("D, d M Y H:i:s") . " GMT">";
?>


Не знаю, перебор ли это, но делая вывод этого HTML скорее всего можно сказать, что практически все браузеры должны срабатывать, по крайней мере те, которые хоть как-то считаются со стандартами.

Источник: http://www.firststeps.ru
Автор : Кузин Андрей
Комментарии: Комментарии (0)

Внимание!

Друзья сайта
Голосование ::
Случайные статьи ::
Добавления в форуме ::
Новые комментарии ::
Пользователи on-line ::
0 пользователь, 5 гостей
 
Страница создана за 0.009 секунд

SQL общее время: 0.002 секунд
SQL запросов всего: 14
Администрация сайта не несет ответственности за содержание рекламных материалов, а так же за информацию размещаемой посетителями. При использовании материалов сайта ссылка на svdpro.info обязательна.

Powered by LDU 802

Рейтинг@Mail.ru
Copyright © 2005 - 2011 «SVD Programming»
Версия сайта для коммуникаторов
Обратная связь - Карта сайта