If modified since как настроить
Перейти к содержимому

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

  • автор:

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 7 авг. 2023 г. 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– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.

Главное о Last-Modified: что это, как настроить и проверить

Last-modified — это http-заголовок с датой и временем последнего изменения страницы по мнению сервера. Шаблон такой:

Last-Modified: , :: GMT

Last-Modified: Wed, 21 Oct 2020 09:48:00 GMT

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

Как это работает:

  1. При первом запросе документа сервер сообщает текущее время и дату с точным временем последнего изменения документа в http-заголовке Last-Modified.
  2. При повторном обращении к документу бот или браузер отправят на сервер, где лежит кэшированная страница, запрос If-Modified-Since — не изменилась ли страница после даты, полученной в Last-Modified? Если изменилась, нужна новая версия.
  3. В ответ боты и браузер получают информацию, когда страницу изменили. Дальше возможны два варианта:
  • если после посещения бота на странице что-то поменяли, сервер возвратит 200 ОК и будет загружать новое содержимое страницы, а робот поймет, что ему нужно обработать изменения;
  • если с последнего посещения страница не изменилась, сервер возвращает заголовок «304 Not Modified» и не будет загружать сайт. Страница загрузится из кэша, боты поймут, что изменений нет, и переобходить ее не будут.

Чем полезен Last-modified

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

«Следите за корректностью HTTP-заголовков. В частности, важно содержание ответа, который сервер отдает на запрос «if-modified-since». Заголовок Last-Modified должен отдавать корректную дату последнего изменения документа». Яндекс.Справка

Чем это полезно для сайта:

Сократить нагрузку роботам — ускорить индексацию

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

Поисковые боты благодаря датам изменений контента могут расставить приоритеты в обходе: начать с важных страниц, где что-то изменилось. Это повысит индексацию новых материалов.

Отобразить новую дату материала

Если веб-мастер указал дату в корректном формате, страницы сайта будут участвовать в сортировке по датам в выдаче. Поисковики и пользователи любят свежие материалы: выше шанс, что информация будет актуальной. Указывать даты последних изменений на страницах крупных сайтов советует и представитель Google Джон Мюллер.

Ускорить загрузку и сэкономить трафик

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

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

Серверу нужно будет передавать пользователю только те страницы, где что-то обновили. Если изменений не было, в дело пойдут версии из кэша.

Особенно это важно страницам с высокой посещаемостью некоторых тематик. Например, пользователь ждет письмо, обновление результатов матча или появление новых вакансий и постоянно обновляет обновлять страницу. Если таких пользователей много, возрастет нагрузка на сервер из-за постоянных запросов страницы и ее отрисовки. Если правильно настроить Last-Modified, сервер передаст страницу один раз, и пока на ней ничего не изменилось, на запросы будет отвечать «304 Not Modified» — изменений нет, повторно загружать не надо.

Как настроить Last-modified

Перед настройкой Last Modified нужно убедиться, что ваш сервер вообще его поддерживает.

Настройка Last-modified через плагины или вручную

У популярных CMS есть готовые решения, к примеру:

  • WordPress — плагины Clearfy, WP Super Cache, WP Last Modified Info, Last Modified Timestamp, If Modified Since и другие;
  • Drupal — модуль lastmodified_since;
  • Joomla — модуль Last Modified Any, Last Modified Products for JoomShopping.

Часто для того же результата достаточно реализованного кэширования на CMS.

Если сайт статический, достаточно на каждой странице указать Last-Modified с датой последнего изменения. А после обновлений менять дату вручную.

Если динамическая, то есть постоянно обновляется, можно настроить отправку http-заголовка Last-Modified на php, добавив в head страницы код:

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

Первая строка преобразует дату в метку в формате Unix Time Stamp, используя время изменения текущей страницы, которое определяет автоматически.

Дальше проверяем If-Modified-Since, если изменений нет — отдаем 304 Not Modified и останавливаем работу скрипта, если есть — ответ сервера 200 ОК, отдаем страницу целиком.

Как указать дату правильно

Если указать дату обновления некорректно, боты все равно проиндексируют страницу, но она не сможет участвовать в сортировке результатов по дате.

Порядок должен быть таким, используется GMT — время по Гринвичу:

Last-Modified: , :: GMT

Как проверить Last-Modified

У PR-CY есть бесплатный инструмент, позволяющий взглянуть на сайт глазами поискового робота. Если Last-Modified есть, инструмент его покажет:

Проверить наличие Last-Modified

В панели Яндекс.Вебмастера есть инструмент «Проверка ответа сервера»:

Проверка Last-Modified

Сервер будет отдавать 304 Not Modified в случае, когда страница не изменилась с последнего посещения, и 200 ОК, если на ней что-то меняли.

Вы используете Last-Modified, видите в нем смысл? Расскажите в комментариях!

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

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

Почитать позже

Мы уже писали о том, как составлять карты сайтов и почему они влияют на оптимизацию. В один ряд с этими инструментами можно поставить заголовок 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. Она самостоятельно обновляет страницу после публикации комментариев. Для этого добавьте ее в эту строчку:

Вывод

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

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

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

Узнайте, как увеличить конверсию на 41%!

Всего 3 шага и 5 минут вашего времени на пути к росту.

Last-Modified и Not-Modified

Уже устал всем объяснять, но так как я действительно хочу помочь вашим сайтам, то решил записать это видео.

Видео инструкция

Не любите читать — смотрите видео.

  • нагружается сервер,
  • страдает загрузка сайта в браузере,
  • замедляется индексация и сканирование сайта поисковыми ботами.

Смотрите, ваш сайт это не какой-то монолит, а состоит из многих разных файлов. Их количество зависит от объёма сайта, но даже если взять ОДНУ страницу, то она состоит из нескольких десятков разных файлов. Это скрипты, шрифты, стили, картинки и прочее. Количество таких файлов у каждой страницы зависит от дизайна и вёрстки.

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

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

Если всё настроить правильно, то это существенно ускорят процесс и экономит трафик. Тогда, если бот вернётся даже через год, то он скачает только те файлы, которые изменились за это время.

Как проверить есть ли ошибка

Предвижу, что и у вашего сайта есть эта проблема… Вы можете легко это проверить.
Не хотите проверять сами, просто напишите мне в Telegram и я проверю бесплатно. Если хотите сами, то читайте дальше…

Для проверки переходим в ресурс last-modified.com. При тесте указываем не ссылку на сайт, а ссылку на какой-нибудь статический файл сайта. Например, кликаем правой мышкой по картинке и выбираем «Копировать URL картинки» или открываем исходный код, жмём Ctrl + F и ищем любой файл по расширению. Кликаем правой кнопкой и выбираем «Копировать адрес ссылки». Вставляем в заранее открытый ресурс и проверяем.

Если видим вот такое сообщение об ошибке, то нужно исправлять.

Сообщение о неправильной настройке заголовка Not Modified

Если у картинки ошибка, то с 90% вероятностью ошибка будет и у стилей, и у скриптов. А если ошибки нет то даю 40% что вероятно забыли указать шрифт woff2, формат картинок webp или что-то ещё. Поэтому для надёжности лучше проверить картинки разного формата SVG, PNG, WebP, AVIF, стили, скрипта и разные форматы шрифтов, а также PDF.

Когда ошибки нет, то тест будет выглядеть вот так.

Сообщение о правильной настройке заголовка Not Modified

Если ошибка есть и нужна помощь по исправлению, то читайте дальше.

Как поставить задачу специалисту

Если хотите обойтись без меня, то вот вам инструкция, как поставить задачу сисадмину или техподдержке хостинга.
За способ спасибо Дэми Мурычу, так как я в настройках серверов плохо разбираюсь. Он дал наводку, что в основном ошибка в настройках Nginx серверов и я по сей день не встречал другой причины. Нужно описать ошибку сисадмину или техподдержке хостинга и попросить файле конфигурации Nginx изменить значение if_modified_since exact; на if_modified_since before; или просто к статическим данным добавить if_modified_since before;
Либо же используйте текст для общарещния в тех поддержку

Добрый день! Мой домен: [ссылка на домен] Сайт не корректно отдаёт заголовки Last-Modified и/или Not-Modified Проверяю файл: [полная ссылка на картинку/стиль/скрипт] На этом ресурсе: https://last-modified.com/ При запросе статического контента (.jpg .png .css и т.д.) с использованием заголовка If-Modified-Since или If-None-Match должен возвращаться код 304 Not Modified, если файл не изменялся с указанного момента. Скорей всего, текущая конфигурация Nginx настроена не правильно и по умолчанию Nginx работает с настройкой: if_modified_since exact; Получается, что он вернёт верный заголовок 304 Not Modified только в случае, если прям точно совпадают даты из заголовка If-Modified-Since с датой из заголовка Last-Modified. Если последнее изменение (Last-Modified) было позавчера, а заголовок If-Modified-Since содержит вчерашнюю дату, то тоже должен вернуться верный ответ сервера (304 Not Modified) и он не должен содержать тела страницы. Для этого нужно переделать настройку «if_modified_since exact;» на «if_modified_since before;» или в файле конфигурации у локации статических файлов прописать «if_modified_since before;» Исправьте, пожалуйста!

На хостинге Beget с удовольствием идут на обсуждение вопроса и легко вносят правки. Правда иногда просят полный список статических файлов:

jpg|jpeg|gif|swf|png|avif|webp|ico|mp3|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|avi|ppt|txt|tar|mid|midi|wav|bmp|rtf|wmv|mpeg|mpg|mp4|m4a|spx|ogx|ogv|oga|webm|weba|ogg|tbz|js|7z|woff|woff2|ttf|svg|iso

На хостинге reg-ru отказываются помочь, но там можно перевести управление хостингом в ручной режим и настроить самостоятельно.
Во многих других местах не хотят вносить правки. Начинают доказывать что так и должно быть и искать другие отговорки, чтоб не настраивать. Частенько переписка затягивается надолго, но у меня ещё ни разу не было такого, чтоб не получилось договориться.

Если нужна помощь по настройке или общению с техподдержкой, то смело обращайтесь.
Пусть ваш сайт найдут, поймут и полюбят не только посетители, но и поисковые системы.

Комментарии

Как обычно, мы открыты для общения и вы можете смело писать свои комментарии, задавать вопросы и просто делиться мнением. Ваши отзывы очень важны для нас!

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

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