- Заголовок Last-Modified ускоряет индексацию новых страниц в разы
- Настройка заголовка Last-Modified
- Как настроить meta Last-Modified для статичных html страниц
- Как настроить Last-Modified в php
- Как настроить Last-Modified .htaccess
- Как настроить Last-Modified nginx + php
- Проверить Last-Modified
- Добавить комментарий (8) Отменить ответ
- Как и зачем настраивать заголовок Last-Modified?
- Почему же роботы быстрее индексируют сайты с настроенным Last-Modified?
- Как настроить Last-Modified
- Отдача HTML заголовков 304 Not Modified на PHP
Заголовок Last-Modified ускоряет индексацию новых страниц в разы
HTTP заголовок Last-Modified (последние изменения) передает клиенту время последнего изменения документа (веб-страницы). Клиент (браузер или поисковый робот) отправляет серверу заголовок «If-Modified-Since» и если дата последнего изменения страницы совпадает, сервер возвращает заголовок «304 Not Modified» и не загружает страницу. Если время последнего изменения отличается (или last modified header не настроен) — сервер возвращает заголовок «200 OK» и загружает страницу. То есть вместо повторной перезагрузки страницы и обновления кеша, клиент получает всего лишь заголовок 304. Клиент экономит трафик, а сервер отдает меньше данных — обоюдная экономия.
Но, зачем была бы эта статья, если не рассказать про пользу, которую настройка заголовка Last-Modified несет для SEO оптимизации сайта, а если точнее для ускорения индексации сайта. Нетрудно догадаться, что 10 страниц сайта будут проиндексированы быстрее, чем 1000. Тот же принцип, который позволяет оптимизировать загрузку страниц работает и для индексации. Поисковой системе не нужно индексировать 1000 страниц, чтобы найти 10 новых страниц. Благодаря last modified, мы оставляем для робота только новые страницы (или обновленные). Робот приходит на сайт и берет сперва то, что нужно, а потом все остальное.
Да, как и sitemap xml, заголовки last-modified являются рекомендаций , а не руководством к действию и поисковые роботы все равно будут индексировать даже старые страниц, но уже в другом порядке. Кроме того, если в результатах поиска рядом со страницами сайта будет показываться дата, это значительно повысит CTR сайта в поиске, что хорошо скажется на поведенческом факторе сайта.
Настройка заголовка Last-Modified
Крупные поисковые системы рекомендуют вебмастерам использовать обработку заголовков для ускорения индексации или сокращения нагрузки. Вот, что по этому поводу пишут поисковики в своих руководствах.
Вот примеры того, как настроить отправку заголовка last-modified и правильную обработку If-Modified-Since.
Как настроить meta Last-Modified для статичных html страниц
Как настроить Last-Modified в php
Как настроить Last-Modified .htaccess
Как настроить Last-Modified nginx + php
Проверить Last-Modified
Когда передача заголовка клиенту настроена, не повредит проверка last modified на корректность. Проверить Last-Modified на собственном или стороннем сайта можно через онлайн сервисы.
Или сделать свою проверку на корректную обработку заголовка Last-Modified:
Настройка заголовка Last-Modified и обработка заголовка If-Modified-Since будет крайне полезна любому более или менне крупному сайту. Скорость обработки страниц сайта может стать значительным фактором улучшения ранжирования сайта в поиске. Сравнительно несложная настройка не создаст проблем, тем более, что для популярных CMS вроде joomla, wordpress, modx и т.д. существуют готовые решения.
Добавить комментарий (8) Отменить ответ
Насколько я понимаю, это очень общие советы? При добавлении такого заголовка нужно проанализировать весь сайт , как он настроен дял подачи нового материала. Если я не права, то следует более детально давать инструкции. Насторойка заголовка last -modified производиться где: в php, .htaccess и других ресурсах одновременно или только где-то в одном документе? Если в .htaccess, то в какой конкретно модуль вставлять эти строки? Все слишком запутано.
Полностью солидарен с Вами, и еще один факт для WordPress ни один пример не работает.
Для WP существует масса решений, неужели не нашли?
Вы правильно подметили, и похоже конверт монстру по барабану ваши замечания,
Беспочвенные обвинения, так не приятны(
Да, это общие советы. Универсального правильного кода быть не может.
Если у вас распространенная cms, начните поиск решения с плагина (на WP, например WP Super Cache хорошо себя показал).
Ну и конечно, не рекомендуем лезть в код без специалистов.
Как и зачем настраивать заголовок Last-Modified?
Зачем настраивать заголовок Last-Modified. Давайте попробуем максимально быстро и просто разобраться с настройкой заголовка Last-Modified.
Для начала скажу, что это нужно в первую очередь для снижения нагрузки на сервер и ускорения индексации страниц. Именно поэтому необходимо произвести настройку заголовка Last-Modified, особенно для крупных ресурсов с большим количеством страниц.
Цель этого заголовка — сообщить клиенту (браузеру или поисковику) информацию о последних изменениях конкретной страницы. Клиент передает серверу заголовок If-Modified-Since. Если изменений на странице не обнаружено, то от сервера возвращается заголовок «304 Not Modified». При этом страница не загружается.
Если же изменения вносились, то это будет учтено, и сервер вернет заголовок «200 OK» (страница загрузится с обновленным содержимым).
Корректная настройка Last-Modified дает следующие преимущества:
- ускоряется загрузка страниц для пользователей;
- снижается нагрузка на сервер;
- в результатах поиска отображается дата последнего обновления содержимого страницы;
- страницы при сортировке в поисковике по дате занимают более высокие позиции;
- существенно ускоряется индексация страниц.
Почему же роботы быстрее индексируют сайты с настроенным Last-Modified?
Ответ прост: если на сайте было изменено всего 20 страниц, то роботу не нужно индексировать все 500 в поисках нового контента, поскольку Last-Modified укажет страницы с изменениями.
Но это указание является рекомендательным, как и sitemap.xml, поэтому робот вначале проиндексирует обновленные страницы, а затем — все остальные.
Last-Modified особенно важен для ресурсов с большим количеством страниц, ведь на обход каждого сайта роботу отводится ограниченное количество времени, и он может не успеть дойти до нужных страниц.
Как настроить Last-Modified
Для начала необходимо проверить, настроен ли у вас этот заголовок. Для этого можно использовать сервисы varvy.com, last-modified.com или tools.seo-auditor.com.ru. Если проверка показала отсутствие заголовка, то следует приступить к его настройке.
Если у вас статический сайт, то для каждой страницы необходимо прописать код, который вы видите на экране:
После каждого изменения содержимого вручную изменяем дату в коде. И что, каждый раз так, спросите вы меня? Да, если сайт статический.
Если сайт динамический, то используем настройку в PHP. Часто встречается вот такой код:
header(«Last-Modified: » . date(‘r’,strtotime($post->post_modified)))
Его необходимо добавить в header.php. Но он будет работать только для записей и страниц и не будет срабатывать на главной. Также он недействителен для таксономий, архивов и учета новых комментариев.
В связи с этим рекомендуется использовать следующий код:
header ($_SERVER[‘SERVER_PROTOCOL’] . ‘ 304 Not Modified’);
header(‘Last-Modified: ‘ . $LastModified);
Также можно настроить заголовок, прописав две строки в файле .htaccess:
RewriteRule .* — [E=HTTP_IF_MODIFIED_SINCE:%
RewriteRule .* — [E=HTTP_IF_NONE_MATCH:%
Но в этом случае необходимо проверить, не возникнет ли проблем со стороны хостинга.
Чтобы не прописывать коды, можно использовать готовые решения для настройки Last-Modified. Например, для CMS WordPress есть плагины Clearfy и Last Modified Timestamp. Настройку можно выполнить с помощью плагина WP Super Cache. Для этого в расширенных настройках активируйте пункт «Ошибка 304» (поддержка ответа 304 отключена по умолчанию, так как на некоторых хостингах могут возникать проблемы). Для других CMS также существуют свои плагины, ну или в крайнем случае, можно заказать плагин у программиста.
Следует понимать, что настройка Last-Modified не всегда полезна (например, когда на каждой странице установлен «сквозной» блок информации с регулярно меняющимся контентом одинакового содержания). В этом случае поисковики могут перестать воспринимать информацию как новую и станут реже посещать ваш сайт.
В остальных случаях, настроив Last-Modified, вы получаете:
- экономию трафика;
- ускоряете работу сайта;
- выполняете рекомендации поисковиков Google и Яндекс, что значительно ускоряет индексацию и повышает видимость страниц в поиске. Особенно хорошо это заметно на ресурсах с большим количеством страниц.
Отдача HTML заголовков 304 Not Modified на PHP
Тут мы обсудим работу с заголовком 304 Not Modified на PHP. Здесь вы не найдете подробного разжевывания работы функций, но представлен простой фрагмент кода, который решит эту задачу.
Этот материал может помочь новичкам разобраться в теме, как добиться правильного отображения текущего состояния сайта в браузерах пользователя. Дабы не вдаваться в подробности кеширования файлов сайта на стороне браузеров, прокси серверов, и не лезть в настройки веб сервера (ну мало ли просто не хочется), особенно если есть навыки работы в PHP, предлагаю ознакомиться с моим постом!
Хочу с вами поделиться своей идеей, а точнее, просто способом, которым я реализовал отдачу заголовков LastModified и Not Modified, в случае, когда сайт собран из блоков + файлы таблиц стилей, прочих подключаемых файлов. (Изменив один из блоков, закешированный сайт продолжает отображаться в старом варианте — в браузерах пользователей).
Для решения этой проблемы достаточно добавить этот код в самый верх страницы, предварительно проработав его под свои файлы сайта.
Работа такого блока кода достаточно проста пониманию, но на заре своих опытов в программировании, пока я еще не определился с тем, чему хочу посвятить свою дальнейшую деятельность, эта тематика мне доставила достаточно много хлопот, поскольку дорвеи и прочие сайты (как сделать сайт самому) не могли мне тут помочь, и мне пришлось начать разбираться в PHP с самых базовых основ и возможностей.
1. Определим время последнего изменения текущей страницы, и прочих блоков php (включая и файл CSS и какие угодно другие файлы) и присвоим дексрипторы этих таймштампов в переменные.
2. Далее следует стандартный алгоритм выбора большего числа с занесением его в третью переменную. Подробно описывать не буду.
3. И когда известен самый свежий блок, которых у нас в странице много, мы возьмем его время изменения и присвоим это значение нашей странице, не забыв перевести из формата тайм штамп в формат GMT
gmdate(«D, d M Y H:i:s \G\M\T», $LastModified_unix);
4. При первом обращении браузера к серверу, браузер получит всю страницу целиком и время изменения страницы.
5. При последующем обращении, браузер отправит серверу это значение времени, и, если в нашей странице ничего не менялось, получит ответ Not Modified. Страница не будет передана в браузер.
=$aas1) <
$timetime = $tekuchaya_page;
>
else <
$timetime = $aas1;
>
if($aas2>=$timetime) <
$timetime = $aas2;
>
if($aas3>=$timetime) <
$timetime = $aas3;
>
if($aas4>=$timetime) <
$timetime = $aas4;
>
if($aas5>=$timetime) <
$timetime = $aas5;
>
if($aas6>=$timetime) <
$timetime = $aas6;
>
$LastModified_unix = $timetime; // время последнего изменения страницы
$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);
header(‘Content-type: text/html; charset=utf-8’);
?>
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.