19.12.2017 09:25:20 am
Продолжаю исследовать свой движок и добавлять в него свои правки, которые на мой взгляд помогают развитию сайта. Сегодня я дошел до заголовка Last-Modified, чье предназначение: говорить поисковикам время последнего изменения записи.
Наверняка у вас появился вопрос: что дает заголовок Last-Modified? В первую очередь ускоренную индексацию поисковыми системами. Поисковый робот получив дату последнего изменения может определить стоит ли переиндексировать документ или нет. Если ПС "решает", что документ без изменения с момента его последнего прохода по сайту, то остается больше времени на новые записи. Экономим время! Если ваш сервер имеет ограничение на нагрузку, то отдача данного заголовка поможет снизить нагрузку создаваемую поисковиками, так как они не будут "бродить" лишний раз по документам, которые не были изменены.
Это не все преимущества заголовка...
Отдавать заголовок я решил при помощи PHP. Я написал простую функцию (код для функции: https://last-modifie ... -since-php.html), вот она:
И теперь там, где мне надо отдавать заголовок Last-Modified, я выполняю эту функцию:
Переменные передаваемые в функцию:
Вот собственно и все.
Проверить ответ заголовка Last-Modified можно тут https://last-modified.com/ru/.
Возможно будет интересно:
- Last-Modified - время последнего изменения записи для phpFox
- Сайт не отдает заголовок Last-Modified
- Два заголовка "Last-Modified" для одной страницы
Наверняка у вас появился вопрос: что дает заголовок Last-Modified? В первую очередь ускоренную индексацию поисковыми системами. Поисковый робот получив дату последнего изменения может определить стоит ли переиндексировать документ или нет. Если ПС "решает", что документ без изменения с момента его последнего прохода по сайту, то остается больше времени на новые записи. Экономим время! Если ваш сервер имеет ограничение на нагрузку, то отдача данного заголовка поможет снизить нагрузку создаваемую поисковиками, так как они не будут "бродить" лишний раз по документам, которые не были изменены.
Это не все преимущества заголовка...
Отдавать заголовок я решил при помощи PHP. Я написал простую функцию (код для функции: https://last-modifie ... -since-php.html), вот она:
// Last Modified
public function lastModified($timeStamp, $timeUpdate)
{
$lastModifiedUnix = !empty($timeUpdate) ? $timeUpdate : $timeStamp;
$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 >= $lastModifiedUnix)
{
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}
$lastModified = gmdate('D, d M Y H:i:s \G\M\T', $lastModifiedUnix);
header('Last-Modified: ' . $lastModified);
} // Last Modified End
Все просто - получаем время последнего изменения страницы, проверяем наличие If-Modified-Since, если есть - отдаем 304 Not Modified и останавливаем работу скрипта, иначе генерируем заголовок Last-Modified и отдаем страницу.
И теперь там, где мне надо отдавать заголовок Last-Modified, я выполняю эту функцию:
Phpfox::getLib('seo.header')->lastModified($timeStamp, $timeUpdate);
Переменные передаваемые в функцию:
$timeStamp
- Время (Unix) создания записи (будет использоваться если запись ни разу не редактировалась).$timeUpdate
- Время (Unix) редактирования записи.
Вот собственно и все.
Проверить ответ заголовка Last-Modified можно тут https://last-modified.com/ru/.
Возможно будет интересно:
- Last-Modified - время последнего изменения записи для phpFox
- Сайт не отдает заголовок Last-Modified
- Два заголовка "Last-Modified" для одной страницы
- Жалоба
05.01.2018 11:43:45 am
Избавился от лишней переменной, теперь моя функция выглядит так:
Использование:
// Last Modified
public function lastModified($timeUpdate)
{
$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 >= $timeUpdate)
{
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}
$lastModified = gmdate('D, d M Y H:i:s \G\M\T', $timeUpdate);
header('Last-Modified: ' . $lastModified);
} // Last Modified End
Использование:
Phpfox::getLib('seo.header')->lastModified($timeUpdate);