2.20.19. Сервер не возвращает HTTP-заголовок Last-Modified
Внимание!
Заголовок не будет возвращаться для динамического контента, если активированы какие-либо опции модуля PageSpeed.
Сервера виртуального хостинга по умолчанию возвращают HTTP-заголовок Last-Modified
для статического контента (изображения, таблицы стилей, JS-скрипты). Если вы столкнулись с ситуацией, при которой сервер не возвращает этот заголовок, вам стоит проверить, не включена ли опция «SSI» в настройках сайта:
Если опция «SSI» включена, сервер не будет возвращать заголовок для контента, передаваемого веб-сервером Apache. Для статического контента заголовок будет возвращаться в любом случае. Работа технологии SSI обеспечивается благодаря модулям веб-сервера Apache, который мы используем в качестве бекенд-сервера на хостинге. В официальной документации сообщается, что при использовании SSI, заголовок 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.com.