Quantcast
Channel: Библиотека знаний
Viewing all articles
Browse latest Browse all 1318

Last-Modified - передает клиенту время последнего ...

$
0
0

Last-Modified - передает клиенту время последнего изменения документа

HTTP заголовок Last-Modified (последние изменения) передает клиенту время последнего изменения документа (веб-страницы). Клиент (браузер или поисковый робот) отправляет серверу заголовок «If-Modified-Since» и если дата последнего изменения страницы совпадает, сервер возвращает заголовок «304 Not Modified» и не загружает страницу. Если время последнего изменения отличается (или last modified header не настроен) — сервер возвращает заголовок «200 OK» и загружает страницу. То есть вместо повторной перезагрузки страницы и обновления кеша, клиент получает всего лишь заголовок 304. Клиент экономит трафик, а сервер отдает меньше данных — обоюдная экономия.

Meta Last-Modified для статичных html страниц

<metahttp-equiv="Last-Modified"content="Sun, 11 Sep 2001 17:31:28 GMT">

Last-Modified в php

<?php$LastModified_unix=1294844676;$LastModified=gmdate("D, d M Y H:i:s \G\M\T",$LastModified_unix);$IfModifiedSince=false; 
if(isset($_ENV['HTTP_IF_MODIFIED_SINCE']))$IfModifiedSince=strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'],5));if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))$IfModifiedSince=strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'],5));if($IfModifiedSince&&$IfModifiedSince>=$LastModified_unix){header($_SERVER['SERVER_PROTOCOL'].' 304 Not Modified');exit;}header('Last-Modified: '.$LastModified);?>

Last-Modified .htaccess

RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]

Last-Modified nginx + php

location ~ \.php$
{ 
 …
 if_modified_since off;

 fastcgi_pass fcgi;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME /<путь > /web$fastcgi_script_name;
 …
 fastcgi_pass_header Last-Modified;
 include fastcgi_params;
}

Проверка корректности заголовка Last-Modified

<?php
$ch = curl_init();

 $url = 'http://site.ru/1.php ';

 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, true);
 curl_setopt($ch, CURLOPT_NOBODY, true);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array(
 'If-Modified-Since: Sun, 01 Sep 2001 17:33:22 GMT'
 ));

 ob_start();
 curl_exec ($ch);
 curl_close ($ch);
 $data = ob_get_contents();
 ob_end_clean();

 echo nl2br($data);
?>

Сервисы проверок


Viewing all articles
Browse latest Browse all 1318