Назначение: заголовки необходимы для того, чтобы дать понять клиенту (поисковому боту) то, что контент на странице не был изменен с момента последнего посещения. По логике данный механизм понижает приоритет страницы на переиндексацию, что влечет более быструю индексацию страниц, контент которых был изменен. Считаю, что заголовки больше нужны для сайтов с большим количеством страниц (сверх 100 000). Также применимо для ИМ, не взирая на то, что у интернет-магазинов есть много динамического контента (его можно исключить, вопрос в возможностях и профессионализме администратора).
Механика работы
- Клиент запрашивает страницу, на выходе получает 200 OK + заголовок Last-Modified (в этом заголовке дата последнего изменения контента. На ИМ часто тупо ставят 1 день назад).
- Запрашивает повторно страницу (переиндексация через 5 дней, скажем) с входным заголовком If-Modified-Since, в котором стоит значение с датой из Last-Modified. Если после переданной даты не было изменений, то сервер отдаст 304 (мол ничего не изменилось, и можешь не тратить ресурс, чтобы не переиндексировать):
- Если изменения были, то 200 OK и новое значение в Last-Modified (дата, когда был изменен контент):
- Для проверки корректности рекомендую использовать сервис "Проверка ответа сервера" в ЯндексВебмастер, т.к. в нем можно выбрать дату для запроса. Использовать сервис https://last-modified.com не рекомендую, т.к. в нем нельзя выбрать дату для запроса.
Суть
- Контент на странице может не обновляться годами. Следовательно при каждом последующем посещении боту всегда будут отдавать 304. Тогда, по задумке, бот понизит приоритет пересканирования данной страницы.
- Если же контент изменился после первого посещения — тогда боту сразу отдадут 200 код (мол пора переиндексировать страницу) и новую дату Last-Modified.
Если проще, то "Клиент" и "Сервер" обмениваются датами
- клиент (поисковый бот) при первом обращении получил дату 21.09.2019 и запомнил у себя;
- при втором обращении клиент отправляет запрос на сервер с датой 21.09.2019;
- сервер сам решает, были ли изменения с 21.09.2019 или нет. Если были — отдаст 200 и соответственно новую дату в Last-Modified. Если изменений не было — отдаст 304.
Делать костыль, когда в Last-Modified всегда пишут дату "Сутки назад", смысла нет. Максимум, что мы выигрываем — это не даем боту 2 раза в течении суток переиндексировать эту страницу.