Перейти к содержимому

If modified since как настроить

  • автор:

Как правильно настроить if modified since по рекомендации Яндекс и Google

Яндекс пишет: Следите за корректностью HTTP-заголовков. В частности, важно содержание ответа, который сервер отдает на запрос «if-modified-since». Заголовок Last-Modified должен отдавать корректную дату последнего изменения документа. Google пишет: Убедитесь, что ваш веб-сервер поддерживает HTTP-заголовок If-Modified-Since. С его помощью Google может узнать, изменился ли контент сайта с момента последнего сканирования. Эта функция помогает сократить лишнюю нагрузку на сервер. Логика: Чтобы ускорить индексацию новых товаров поисковиками и новых страниц, а так же переиндексацию изменений на странице, снизить нагрузку на хостинг, нужно корректно отдавать серверные заголовок MODIFIED_SINCE. Скорость навигации по сайту тоже вырастет потому что при частом открытии страниц сайта браузер уже не запрашивает с сервера страницу. Ошибка: много встречал примеров когда датой обновления документа бало текущее время на момент запроса к странице. В корне не правильно, потому что в итоге вы не получаете правильной работы этих заголовков, в итоге роботы грузят каждую страницу даже не меняющуюся. В этом случае выделенные лимиты на обход будут быстро исчерпываться и индексация будет медленной.

Отслеживать
задан 16 янв 2019 в 12:46
21 3 3 бронзовых знака

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Решение:

1. настроить config (nginx в директиве server if_modified_since exact). http://nginx.org/ru/docs/http/ngx_http_core_module.html#if_modified_since чтобы сервер отдавал эти заголовки браузеру и роботу поисковика.

2. Код PHP вверху index.php

$LastModified_unix = $date_changed; // время последнего изменения страницы $LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix); $IfModifiedSince = ''; 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); 

Важно помнить: после внедрения вы получаете корректный обход поисковыми системами, но одновременно с этим страницы без изменений будут стареть для поисковых систем. Зато Вы точно будете знать что новый и обновленный контент будет быстро учтен.

If-Modified-Since

Заголовок HTTP запроса If-Modified-Since делает запрос условным: сервер отправит обратно запрошенный ресурс с статусом 200 , только если он был изменён после указанной даты. Если запрос не был изменён после указанной даты, ответ будет 304 без какого-либо тела; заголовок Last-Modified при этом будет содержать дату последней модификации. В отличие от If-Unmodified-Since , If-Modified-Since может использоваться только с GET или HEAD .

При использовании в сочетании с If-None-Match (en-US) заголовок If-Modified-Since игнорируется, кроме тех случаев, когда сервер не поддерживает If-None-Match.

Наиболее распространённым вариантом использования является обновление кешированного объекта, не связанного с ETag .

Header type Request header
Forbidden header name no

Синтаксис

If-Modified-Since: ,   :: GMT

Директивы

День недели («Mon», «Tue», «Wed», «Thu», «Fri», «Sat» или «Sun») с учётом регистра.

День (2 цифры), например, «04» или «23».

Название месяца («Jan», «Feb», «Mar», «Apr», «May», «Jun», «Jul», «Aug», «Sep», «Oct», «Nov», «Dec») с учётом регистра.

Год (4 цифры), например, «1990» или «2016».

Час (2 цифры), например, «09» или «23».

Минута (2 цифры), например, «04» или «59».

Секунда (2 цифры), например, «04» or «59».

Среднее время по Гринвичу (Greenwich Mean Time). HTTP даты всегда представлены как GMT время и никогда как локальное.

Примеры

If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT

Спецификации

Спецификация Название
RFC 7232, раздел 3.3: If-Modified-Since Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 6 янв. 2024 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2024 by individual mozilla.org contributors. Content available under a Creative Commons license.

Заголовок Last-Modified ускоряет индексацию новых страниц в разы

04.09.2014

18 123

Заголовок 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

Крупные поисковые системы рекомендуют вебмастерам использовать обработку заголовков для ускорения индексации или сокращения нагрузки. Вот, что по этому поводу пишут поисковики в своих руководствах.

Следите за корректностью http-заголовков. В частности, важно, содержание ответа, который сервер отдает на запрос «if-modified-since». Заголовок Last-Modified должен отдавать корректную дату последнего изменения документа. Даже если сервер не выдает дату последней модификации документа (last-modified), ваш сайт будет проиндексирован. Однако в этом случае следует учитывать следующее: - в результатах поиска не будет показываться дата рядом со страницами вашего сайта; - при сортировке по дате сайт не будет виден большинству пользователей; - робот не сможет получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. А так как число страниц, получаемых роботом с сайта за один заход, ограничено, изменившиеся страницы будут переиндексироваться реже.
Убедитесь, что ваш веб-сервер поддерживает HTTP-заголовок "If-Modified-Since". Этот заголовок позволит веб-серверу сообщать Google, изменился ли контент сайта со времени последнего сканирования. Поддержка этой функции сокращает издержки и нагрузку на полосу пропускания.

Вот примеры того, как настроить отправку заголовка last-modified и правильную обработку If-Modified-Since.

Как настроить meta Last-Modified для статичных html страниц

Как настроить Last-Modified в php

= $LastModified_unix) < header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); exit; >header('Last-Modified: '. $LastModified); ?>

Как настроить Last-Modified .htaccess

RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%] RewriteRule .* - [E=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

Когда передача заголовка клиенту настроена, не повредит проверка last modified на корректность. Проверить Last-Modified на собственном или стороннем сайта можно через онлайн сервисы.

Или сделать свою проверку на корректную обработку заголовка Last-Modified:

Настройка заголовка Last-Modified и обработка заголовка If-Modified-Since будет крайне полезна любому более или менне крупному сайту. Скорость обработки страниц сайта может стать значительным фактором улучшения ранжирования сайта в поиске. Сравнительно несложная настройка не создаст проблем, тем более, что для популярных CMS вроде joomla, wordpress, modx и т.д. существуют готовые решения.

Гульнара Самигулина Насколько я понимаю, это очень общие советы? При добавлении такого заголовка нужно проанализировать весь сайт , как он настроен дял подачи нового материала. Если я не права, то следует более детально давать инструкции. Насторойка заголовка last -modified производиться где: в php, .htaccess и других ресурсах одновременно или только где-то в одном документе? Если в .htaccess, то в какой конкретно модуль вставлять эти строки? Все слишком запутано.

All Sem Полностью солидарен с Вами, и еще один факт для WordPress ни один пример не работает.
moderator Для WP существует масса решений, неужели не нашли?
Дядя Вася Вы правильно подметили, и похоже конверт монстру по барабану ваши замечания,
moderator Беспочвенные обвинения, так не приятны(

moderator Да, это общие советы. Универсального правильного кода быть не может.
Если у вас распространенная cms, начните поиск решения с плагина (на WP, например WP Super Cache хорошо себя показал).
Ну и конечно, не рекомендуем лезть в код без специалистов.

Заголовки Last-Modified и If-Modified-Since

Мы уже писали о том, как составлять карты сайтов и почему они влияют на оптимизацию. В один ряд с этими инструментами можно поставить заголовок Last Modified. Это несколько строчек кода, которые увеличивают скорость индексации.

Как устроен Last-Modified

Вопрос «Last Modified, что это?» встречается довольно часто. Хотя ответ кроется в простом переводе на русский язык. Это заголовок последнего изменения страницы. Он сообщает браузеру или поисковым роботам время, когда ее содержание меняли в последний раз. Браузер или поисковые роботы проверяют эти данные. Они отправляют на сервер, где расположена страница, название If-Modified-Since. Ответ сервера зависит от того, совпадает ли дата последних изменений в Last Modified и If-Modified-Since. Если да, то это плохой звонок для роботов Яндекса и Google. Сервер возвращает код ответа 304 и не загружает сайт. Такое бывает, если неверно настроить или не прописать заголовок Last Modified. Если сервер возвращает код ответа 200 ОК, то заголовок работает, сервер загружает данные и начинается индексация страницы.

Для браузера ответ 304 является оптимальным. Он видит, что страница не менялась после последнего захода на ресурс. И тогда браузер следует указаниям из заглавия. Вместо загрузки с сервера он подгружает страницу из кэша. На сервер падает меньше нагрузки, а пользователь потратит меньше трафика.

Как настроенный Last-Modified влияет на скорость индексации

Ваш сайт состоит из 1000 страниц. Поисковой робот Яндекса или Google потратит время на то, чтобы проиндексировать их. Чем больше ресурс, тем дольше роботы будут с ним возиться. Заголовок сокращает время работы, потому что показывает, какие страницы не обновлялись. Робот Яндекса или Google проиндексирует сначала те из них, что изменялись.

Настройка заголовков полезна для больших ресурсов. Роботы потратят меньше времени на их индексацию.

Почему это важно для SEO?

Настраивать названия важно для продвинутых пользователей. Во время поиска они пользуются фильтрами по дате, чтобы получить, к примеру, результаты выдачи за последний месяц. Если исправлять название после внесения изменений, рядом с ней в выдаче появится дата этих изменений. И сразу будет видно, свежая эта страница или уже устарела.

Почему заголовок не подходит для страниц с частыми обновлениями?

Кэш браузера показывает их без изменений. Но разделы сайта быстро устаревают, если это не статический ресурс. Блоги, СМИ, новостные ленты, интернет-магазины часто обновляются за счет комментариев и отзывов. Если загрузить из кэша новостной ленты, не увидишь последних изменений. Робот Яндекса или Google тоже их не увидит, если не прописано корректное заглавие.

Настраиваем Last-Modified

Поисковые системы Яндекса и Google предупреждают о названии If-Modified-Since. Перед тем, как настраивать Last Modified, убедитесь, что ваш сервер поддерживает его. Яндекс еще просит указывать корректную дату в заглавии. Ведь в случае ошибки ресурс все равно будет проиндексирован. Но пользователи не увидят дату обновления и не смогут найти сайт с помощью фильтра по дате.

Посмотрите, настроен ли заголовок на сайте. Откройте сервисы Last-modified или Seo-auditor, укажите URL-адрес и проверьте наличие заглавия. Если его нет, прописываем настройки вручную.

Настраиваем синтаксис Last-Modified

Для статического ресурса достаточно указать простой код с указанием даты последнего изменения:

Такой код необходимо прописан для каждой страницы. А в случае обновления — менять вручную.

Для динамических сайтов с постоянными обновлениями нужно настраивать PHP. Пример кода, который правильно передает все заголовки и не конфликтует с большинством хостингов.

Если нужно настраивать заголовки для ресурса, где появляются комментарии, используйте переменную $last_modified_time. Она самостоятельно обновляет страницу после публикации комментариев. Для этого добавьте ее в эту строчку:

Вывод

Настраивать заголовок несложно, зато он дает несколько преимуществ:

  • Увеличит скорость загрузки.
  • Оставит в покое сервер, которому не придется лишний раз подгружать разделы сайт.
  • Пользователи увидят дату обновления ресурса в результатах выдаче.
  • Увеличится скорость индексации.

Крупные сайты без заглавий последних изменений будут долго индексироваться и долго загружаться. Пользователи могут не дождаться и закрыть вкладку, а роботы понизят позиции в поисковой выдаче. Наличие заголовков поможет получить дополнительный трафик. Пользователи оценят, что вы даете им актуальную информацию и честно сообщаете об этом в графе с датой публикации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *