Выглядит это на php.net следующим образом:
PHP-файла
$timestamps<> = @getlastmod();
/*
Дата prepend.inc представляет возраст ВСЕХ
включённых файлов. Пожалуйста, обновите её при изменении
любого другого включённого файла (если изменение
влияет на отображание индексной страницы).
Накладные расходы на stat слишком велики.
*/
$timestamps<> = @filemtime("include/prepend.inc");
// Календарь - единственная "динамическая" возможность на этой странице
$timestamps<> = @filemtime("include/pregen-events.inc");
// Самая поздняя из этих дат - наша настоящая дата Last-Modified
$timestamp = max($timestamps);
// Заметьте, что эта дата не соответствует RFC 822 (временная зона всегда
// равна GMT)
$tsstring = gmdate("D, d M Y H:i:s ", $timestamp) . "GMT";
// Проверяем, есть ли у клиента кэш этой страницы
if (isset($_SERVER<"HTTP_IF_MODIFIED_SINCE">) &&
($_SERVER<"HTTP_IF_MODIFIED_SINCE"> == $tsstring)) {
header("HTTP/1.1 304 Not Modified");
exit();
}
// Извещаем браузер о дате нашего последнего изменения
else {
header("Last-Modified: " . $tsstring);
}
Я, как обычный человек, изучаю документацию, только когда очень нужно или очень интересно. Здесь мне стало интересно (к тому же про HTTP/1.1 читал мало).
Указано в RFC примерно следующее:
Для оптимизации кэширования контента браузером сервер может добавлять заголовок
Last-Modified, который содержит дату последнего изменения документа в
GMT-формате. День недели и слово GMT являются необязательными. Браузер, получив
такую страницу, может поместить её в кэш; при повторном обращении он добавляет в
запрос заголовок If-Modified-Since со значением, равным полученной дате
Last-Modified.
Сервер, в свою очередь, если страница не изменилась, выдаёт браузеру ответ с кодом 304: HTTP/1.1 304 Not Modified. В случае же изменения возвращается обычный ответ HTTP/1.1 200 OK, а дальше — заголовки и тело страницы.
Плюсы этого приёма очевидны. Кэширование статических документов организуется просто и без участия программиста. С динамическими документами наподобие php-страниц дело обстоит сложнее, хотя именно на них часто приходится большая часть нагрузки сервера. На сайтах с медленным хостингом или объёмным трафиком может быть очень важно применение кэширования, которое достаточно просто реализуется. К тому же баннеры кэшироваться не будут, и всё обновление страницы сведётся к загрузке новых баннеров (что нам и нужно :)).
Хотя… Не всё так просто. Узнать дату последней модификации используемых файлов легко (см. функцию stat); кроме того, можно использовать приём php.net — когда при внесении изменений обновляется дата модификации какого-то конкретного файла.
Сложнее с базой данных. Но, как правило, известно, от каких таблиц зависит контент на данной странице. Получить дату изменения таблицы (по крайней мере, в MySQL) можно таким SQL-запросом:
В поле Update_time мы и получим искомое. Если написать просто
то вернётся информация о всех таблицах.
Вот и всё.
Отзывы:
отзывов пока нет, ваш будет первым!
Смотрите также:
Вы читали "Как установить дату документа (Кеширование и Last-Modified)"

