Как обрабатывать HTTP-заголовок If-Modified-Since в PHP?
Многие браузеры и поисковые роботы, посетив один раз какую-либо страницу, запоминают дату ее последнего изменения. А затем, при следующем обращении, указывают ее в поле If-Modified-Since. Если непосредственно веб-сервер или скрипт умеет корректно обрабатывать такой заголовок, то в том случае, если документ не изменялся с указанной даты, будет дан ответ "304 Not Modified" - без выдачи непосредственно документа.
Корректная обработка заголовка If-Modified-Since снижает нагрузку и на сервер, и на клиентскую часть.
Пример скрипта:
<?php
$modified = "Mon, 20 Dec 2004 09:34:19 GMT";
$ims = "";
$headers = apache_request_headers();
foreach ($headers as $header => $value) {
if (eregi('If-Modified-Since', $header)) { $ims = $value; }
}
if ($ims == $modified) {
header ("HTTP/1.1 304 Not Modified");
header ("Last-Modified: $modified");
exit;
} else {
header ("Last-Modified: $modified");
echo "Some content...\n";
}
?>
В данном скрипте описана лишь общая схема обработки If-Modified-Since. Необходимые прочие заголовки, способ указания даты модификации документа и т.п. нужно указать самостоятельно.