|
Php и web. кэшированиеPHP-программа может управлять кэшированием результатов ее работы формируя дополнительные поля в заголовке HTTP ответа вызовом функции Header(). Несколько общих утверждений характерных не только для PHP-программ: Страницы передаваемые по POST никогда не сохраняются в кэш. Страницы запрашиваемые по GET и содержащие параметры (в URL присутствует '?') не сохраняются в кэш, если не указано обратное. Таким образом в большинстве ситуаций дополнительных инструкций в программу добавлять не надо. Основные моменты на которые следует обратить внимание можно свести к двум: запрет кэширования документов, кэшируемых по умолчанию кэширование документов, не подлежащих кэшированию по умолчанию. Запрет кэширования документов, кэшируемых по умолчанию Эта задача возникает для PHP-скриптов вызываемых без параметров или являющимися индексами директорий, однако формирующих данные персонально под пользователя (например на основе cookies или user agent) или работающих на основе быстро изменяющихся данных. По спецификации HTTP/1.1 мы можем управлять следующими полями: Expires Задает дату истечения срока годности документа. Задание ее в прошлом определяет запрет кэш для данной страницы. Cache-control: no-cache Управление кэш. Значение no-cache определяет запрет кэш данной страницы. Для версии протокола HTTP/1.0 действует "Pragma: no-cache". Last-Modified Дата послднего изменения содержимого. Поле актуально только для статических страниц. Apache заменяет это поле значением поля Date для динамически генерируемых страниц, в том числе для страниц содержащих SSI. На сайте www.php.net дается следующий код для запрета кеширования. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Pragma: no-cache"); // HTTP/1.0 Однако, я считаю, что данный заголовок избыточен. В большинстве случаев достаточно: header("Expires: Thu, 01 Jan 1970 00:00:01 GMT"); Чтобы пометить документ как "уже устаревший" следует установить Expires равным полю Date. header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT"); Ну и не следует забывать, что формы, запрошенные по POST также не подлежат кэшированию. Кэширование документов, не подлежащих кэшированию по умолчанию Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Другие статьи по теме: - обзор сетевых функций php- PHP - система разработки скриптов - встроенные функции в php - авторское право на программное обеспечение - гостевая - это просто! |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |