Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Программы
  • Мифы SEO: Всё о заголовке Last-Modified. Блог в котором есть много интересной информации…

Мифы SEO: Всё о заголовке Last-Modified. Блог в котором есть много интересной информации…

Зачем настраивать заголовок Last-Modified. Давайте попробуем максимально быстро и просто разобраться с настройкой заголовка Last-Modified.

Для начала скажу, что это нужно в первую очередь для снижения нагрузки на сервер и ускорения индексации страниц. Именно поэтому необходимо произвести настройку заголовка Last-Modified, особенно для крупных ресурсов с большим количеством страниц.

Цель этого заголовка — сообщить клиенту (браузеру или поисковику) информацию о последних изменениях конкретной страницы. Клиент передает серверу заголовок If-Modified-Since. Если изменений на странице не обнаружено, то от сервера возвращается заголовок «304 Not Modified». При этом страница не загружается.

Если же изменения вносились, то это будет учтено, и сервер вернет заголовок «200 OK» (страница загрузится с обновленным содержимым).

Корректная настройка Last-Modified дает следующие преимущества:

  • в результатах поиска отображается дата последнего обновления содержимого страницы;
  • страницы при сортировке в поисковике по дате занимают более высокие позиции;
  • существенно ускоряется индексация страниц.
  • Почему же роботы быстрее индексируют сайты с настроенным Last-Modified?

    Ответ прост: если на сайте было изменено всего 20 страниц, то роботу не нужно индексировать все 500 в поисках нового контента, поскольку Last-Modified укажет страницы с изменениями.

    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. Но он будет работать только для записей и страниц и не будет срабатывать на главной. Также он недействителен для таксономий, архивов и учета новых комментариев.

    $LastModified_unix = 1294844676;

    $Last Modified = 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’);

    header(‘Last-Modified: ‘ . $LastModified);

    Также можно настроить заголовок, прописав две строки в файле.htaccess:

    RewriteRule .* —

    RewriteRule .* —

    Но в этом случае необходимо проверить, не возникнет ли проблем со стороны хостинга.

    Чтобы не прописывать коды, можно использовать готовые решения для настройки Last-Modified. Например, для CMS WordPress есть плагины Clearfy и Last Modified Timestamp. Настройку можно выполнить с помощью плагина WP Super Cache. Для этого в расширенных настройках активируйте пункт «Ошибка 304» (поддержка ответа 304 отключена по умолчанию, так как на некоторых хостингах могут возникать проблемы). Для других CMS также существуют свои плагины, ну или в крайнем случае, можно заказать плагин у программиста.

    Следует понимать, что настройка Last-Modified не всегда полезна (например, когда на каждой странице установлен «сквозной» блок информации с регулярно меняющимся контентом одинакового содержания). В этом случае поисковики могут перестать воспринимать информацию как новую и станут реже посещать ваш сайт.

    В остальных случаях, настроив Last-Modified, вы получаете:

    • экономию трафика;
    • ускоряете работу сайта;
    • выполняете рекомендации поисковиков Google и Яндекс, что значительно ускоряет индексацию и повышает видимость страниц в поиске. Особенно хорошо это заметно на ресурсах с большим количеством страниц.

    В области поисковой оптимизации сайтов (SEO) гуляет вообще очень много разных мифов. Какие-то из них имеют под собой основу, какие вообще взялись не пойми откуда. В этой заметке рассмотрим один из них — использование заголовка ответа last-Modified.

    Некоторое время назад к нам попал некий документ, озаглавленный «Рекомендации Ingate для веб студий по продвигаемым сайтам». И одна из «рекомендаций» была следующей:

    После редизайна или на новом разрабатываемом сайте должна быть прописана дата последней модификации страниц сайта (Last Modified)

    Для добавления на сайт на PHP информации о дате последней модификации страниц необходимо в самое начало исходного кода каждой страницы вставить скрипт

    header ("Last-Modified: " . date("D, d M Y H:i:s", time()) . " GMT");
    ?>

    Именно эта дикая ахинея, эта несусветная чушь и откровенно бредовый код и сподвигли меня написать эту заметку. Здесь я постараюсь объяснить, что такое Last-Modified, зачем он нужен и как его используют браузеры и поисковые машины.

    Что такое Last-Modified

    Веб-сервер при передаче информации клиенту (браузеры или поисковому роботу) сообщает довольно много дополнительных данных. Их можно посмотреть в консоли браузера, например:

    настройте сервер на выдачу корректных заголовков ответов (например, если страница не существует, выдавать ошибку 404, а если поступил запрос If-Modified-Since, то выдавать код 304, если страница с указанной в запросе даты не изменялась).

    Также можно увидеть, что если сервер никак не реагирует на условный запрос GET, то он ничем не отличается от обычного запроса. То есть, заголовок Last-Modified с текущим временем, к тому же и неправильно сформированным (привет Интегйту!) вообще не нужен!

    Так нужен ли Last-Modified или нет?

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

    Но зачастую реализовать это в готовой CMS бывает весьма затруднительно. Возможно для этого потребуется довольно значительные изменения кода самой CMS.

    Хотя для ряда CMS это можно реализовать включением кэширования страниц. Если CMS кэширует страницы, создавая и отдавая фактически статичные файлы, то сам веб-сервер будет правильно отвечать на условные запросы. Например, в WordPress это можно реализовать с помощью плагина WP Super Cache :

    Проверим его в работе. Я включил этот плагин, открыл браузер в анонимном режиме и сделал два запроса одной страницы. Хорошо видно, что второй ответ правильный — 304 Not Modified:

    Вместо заключения

    Таким образом, мы разобрались с заголовком Last-Modified. Во-первых, он должен передавать информацию о дате и времени реального изменения документа. Во-вторых, крайне важна реакция сервера на условный запрос с заголовком If-Modified-Since.

    Ну и поменьше слушайте сеошников, которые не знают элементарных основ работы интернета.

    Last modified, как уверяют поисковики, очень важный http-заголовок, который нужен для того, чтобы сообщать дату последней модификации документа, то есть дату последнего изменения на странице.

    Соответственно, если этого заголовка не будет, точнее он не будет отдаваться, то сайт лишается некоторых преимуществ. В частности, вот что я вычитал на просторах сети о пользе last modified:

    1. Улучшается скорость индексации новых страниц, а также за 1 посещение робот может забрать больше страниц в индекс.
    2. Улучшается скорость переиндексации страниц, на которые вы внесли изменения. Это очень полезно, а вот без этого заголовка учета ваших правок нужно ждать дольше.

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

    Как проверить last modified?

    Есть несколько инструментов, мне больше всего понравился этот — http://www.tools.seo-auditor.com.ru/if-modified-since/
    Тут мне просто достаточно ввести адрес главной страницы или любой статьи, а потом выбрать поискового робота — Яндекс.

    Ласт Модифиед на моем сайте нашли, это отлично. Но изначально его не было, как же я его настроил?

    Как настроить last modified?

    Если честно, у меня вышло не так уж и легко с его настройкой. Может из-за того, что сервер nginx . Я ставил AddHeaders — этот плагин ставит все полезные http-заголовки и в их числе есть last modified, но моему сайту он не помог, хотя где-то год назад он успешно активировал на моем сайте этот заголовок.

    Также на этот блог я поставил премиум-плагин Clearfy. Полезная штуковина, там еще и есть функция, которая позволила бы поставить last modified. Я активировал опцию, но заголовок так и не отдавался по результатам проверки. Но в итоге все решило обращение в тех. поддержку плагина — там я описал конфигурацию своего сервера и мне дали конкретный совет — пойти в панель управления сервером, отключить то-то (по-моему SSI). Сказано — сделано и теперь заголовок отдается.

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

    Мало кто обращает внимание на HTTP заголовки Last-Modified и If-Modified-Since при оптимизации своего сайта, а зря! Важно, чтобы страница, контент которой не менялся с последнего визита поискового робота отдавала 304 код, который собственно и говорит о том, что данная конкретная страница ничем не дополнялась – Вы не редактировали и не дополняли текст, к этой записи не добавлялись комментарии и т.п.

    Если данный http-заголовок отсутствует, то в Яндексе, при сортировке результатов по дате, сайт не будет виден большинству юзеров.

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

    С комментариями попроще: когда посетитель добавляет комментарий, то в переменную $last_modified_time время добавления комментария заносится автоматически - это и будет датой последнего изменения страницы.

    Зачем нужны заголовки Last-Modified и If-Modified-Since?

    1. Когда сервер отдаёт такой код, то выполнение всех PHP сценариев на странице даже не запускается. Страница загружается из кэша поиска, а это, как Вы понимаете, весьма существенно снижает нагрузку на сервер к вящей радости Вашего хостера и ускоряет загрузку страницы у посетителя, что тоже не может не радовать.

    Как это происходит?

    Сканируя интернет, пауки Google и Яндекса сохраняют в своей базе копию каждого сайта. Эта копия служит неким образцом для сравнения: все ли по-прежнему или произошли изменения. И если не настроены заголовки Last-Modified и If-Modified-Since или настроены неправильно, новые страницы сайта проходят индексацию, а главная в кэше поисковиков долго не обновляется, как не обновляется и лента комментариев.

    Но для часто обновляемых страниц (новостных лент, обновляемых по многу раз в сутки, активно комментируемых блогов и т.п.) у него есть один недостаток: информация в кэше слишком быстро устаревает и человек, даже перезагружая страницу, не видит свежих новостей, не видит новых комментариев. Но это еще полбеды. Беда в том, что робот этого тоже не видит, если только не включен правильный заголовок Last-Modified.

    header("Last-Modified: ".gmdate("D, d M Y H:i:s ")."GMT");

    Если Ваш сайт обновляется часто (например, Ваши записи часто комментируют) можно отключить кеширование следующим набором заголовков:

    header("Expires: ".gmdate("D, d M Y H:i:s", time() + 7200)." GMT");

    Это означает, что действительность сохранённой копии должна перепроверяться при каждом запросе.

    Как работает кэширование в браузерах?

    Если оно не запрещено вызовом функции no_cache , то в Firefox и в IE страница сохраняется в кэше, при всех последующих запросах выдается именно она.

    Чтобы обновить страницу и получить ее свежую версию, нужно нажать комбинацию клавиш Ctrl + F5 , обычная кнопка «Обновить» (F5) не срабатывает. И надо сказать, документы в кэше IE могут храниться очень-очень долго.

    В Опере страница кэш очищается по нажатию кнопки «Обновить» или клавиши F5. Сочетание CRTL+F5 в Опере - перезагрузка всех открытых вкладок, Как Вы понимаете, если Вы их много наоткрывали – в процессе ожидания у Вас может отрасти борода.

    Если запретить кэширование страницы функцией no_cache , то Опера и Firefox при обращении к такой странице используют механизм с заголовком If-Modified-Since . Таким образом, кэширование происходит, но браузер спрашивает у сервера, изменилась ли страница на самом деле, или нет – это правильная постановка вопроса.

    Следовательно, нужно подключить обработку и этого параметра. Я не буду расписывать, что и какая функция означает, просто приведу код, который корректно отдает заголовки и не вызывает конфликтов на большинстве хостингов, с которыми мне приходилось работать. Эта конструкция работает на sweb.ru, eomy.net, timeweb.ru, fastvps.ru, startlogic.com

    header("Expires: ".gmdate("D, d M Y H:i:s", time() + 7200)." GMT");
    header("Cache-Control: no-cache, must-revalidate");
    $mt = filemtime($file_name);
    $mt_str = gmdate("D, d M Y H:i:s ")."GMT";
    if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) &&
    strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) >= $mt)
    {header("HTTP/1.1 304 Not Modified");
    die;
    }
    header("Last-Modified: ".$mt_str);
    echo $text;
    header("Vary: Accept-Encoding");
    header("Accept-Encoding:gzip,deflate,sdch");
    ?>

    Таким образом, все, что Вам нужно сделать, это скопировать данный код и добавить его в файл header.php Вашей темы оформления НАД . Т.е. этот код – находится в самом верху файла ДО всего остального кода


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

    Проверяем результат на сервисе проверки заголовков Last-Modified и If-Modified-Since http://last-modified.com/ru/if-modified-since.html


    • Если результат положительный – утираем пот со лба и идем пить чай.
    • Если результат отрицательный, ту же конструкцию можно добавить в файл index.php в корне Вашего WordPress (с этим я столкнулась на хостинге timeweb.ru). Точно так же, выше всего остального в нем. Только не забудьте про это, когда будете обновлять – индексный файл перезапишется в стандартном его виде.

    Вуаля! Правильно настроив заголовки Last-Modified и If-Modified-Since, мы получили кучу бонусов:

    • Увеличили скорость загрузки страниц, что важно для робота Google и приятно для людей.
    • Снизили нагрузку на сервер, чем порадовали хостера.
    • В поисковой выдаче Яндекса будет отображаться дата последнего обновления страницы, что в отдельных случаях очень актуально для людей, а потому косвенно это положительно отразится на поведенческих факторах.
    • Страницы нашего сайта будут участвовать в сортировке поисковых систем по дате – да-да, этим пользуются продвинутые пользователи.
    • И, как следствие всего вышесказанного, весьма ускорится индексирование нашего сайта поисковиками.

    HTTP-заголовок Last-Modified сообщает клиенту время последнего изменения страницы (объекта). Если клиент (браузер, поисковый робот) получил заголовок Last-Modified, то при следующем обращении к адресу, при условии, что страница (объект) есть в локальном кеше, он добавит вопрос If-Modified-Since (не изменилась ли страница после даты, полученной в Last-Modified). В свою очередь сервер, получив запрос If-Modified-Since должен сверить полученную временную метку с временем последнего изменения страницы и, если страница не изменялась ответить 304 Not Modified.

    Экономия Трафика

    Если страница не изменилась, то сервер прекратит передачу данных после отправки заголовков с кодом 304 Not Modified, тело страницы, изображения и другие объекты передаваться не будут.

    Снижение нагрузки на сервер

    Правильная реализация проверки времени последнего изменения страницы может значительно (до 30% и более) сократить нагрузку на сервер. Под правильной реализацией подразумевается проверка времени до начала генерации страницы на динамическом сайте. В таком случае все действия для генерации страницы (запрос контента из базы данных, парсинг шаблонов, получение комментариев и др) выполняться не будут. Особенно это актуально для сайтов с высокой посещаемостью и долгой продолжительностью визита пользователя. Пример: пользователь находится на сайте спортивных новостей и постоянно обновляет главную страницу в ожидании публикации результата матча. За несколько минут страница может быть запрошена и получена десятки раз. Если заголовок Last-Modified отдается и запрос If-Modified-Since обрабатывается правильно, то реально страница будет передана один раз, а на все последующие запросы будет выдан ответ 304 Not Modified.

    Ускорение индексации поисковыми системами

    Поисковые системы через руководство для вебмастеров рекомендуют отсылать заголовок Last-Modified и правильно обрабатывать If-Modified-Since.

    Убедитесь, что ваш веб-сервер поддерживает HTTP-заголовок If-Modified-Since. Этот заголовок позволит веб-серверу сообщать Google, изменилось ли содержание сайта со времени последнего сканирования. Поддержка данной функции сократит нагрузку на пропускную способность и издержки.

    Google: Руководство для веб-мастеров

    Следите за корректностью HTTP-заголовков. В частности, важно, содержание ответа, который сервер отдает на запрос If-Modified-Since. Заголовок Last-Modified должен отдавать корректную дату последнего изменения документа. Даже если сервер не выдает дату последней модификации документа (Last-Modified), ваш сайт будет проиндексирован. Однако в этом случае следует учитывать следующее:

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

    Лучшие статьи по теме