Last-Modifiedи время последней модификации

Челябинская область

Автор:Dmitriy Altuhov

Last-Modifiedи время последней модификации

Как приятно, когда браузер проверяет свежая ли у нас копия страницы в кеше или нет.. И, если она свежая, то загружает её из кеша.

Это значительно ускоряет загрузку страниц и уменьшет нагрузку на сервер и трафик.

Код для «статичных» PHP-файлов (которые не работают с базами данных), модернизированный для работы с модульной архитектурой (при которой header и footer подгружаются из отдельных скриптов):

<?php

$filescrpt=$_SERVER[‘SCRIPT_FILENAME’];
$filehdr1=$_SERVER[‘DOCUMENT_ROOT’].»/header1.php»;
$filehdr2=$_SERVER[‘DOCUMENT_ROOT’].»/header2.php»;
$fileftr=$_SERVER[‘DOCUMENT_ROOT’].»/footer.php»;

$last_modified_time = max(filemtime($filescrpt),filemtime($filehdr1),filemtime($filehdr2),filemtime($fileftr));
#$etag = md5_file($file);
$etag = $last_modified_time;

header(«Last-Modified: «.gmdate(«D, d M Y H:i:s», $last_modified_time).» GMT»);
header(«Etag: $etag»);

if (@strtotime($_SERVER[‘HTTP_IF_MODIFIED_SINCE’]) >= $last_modified_time ||
trim($_SERVER[‘HTTP_IF_NONE_MATCH’]) == $etag) {
header(«HTTP/1.1 304 Not Modified»);
exit;
}

?>Для динамичных PHP-файлов (которые берут данные из баз данных) код будет аналогичный, только $last_modified_time должно соответствовать дате последней модификации записи в БД. $etag нужно вычислять через md5 того основного контента, который берётся из БД.

Comments Are Closed!!!