Давайте разберёмся, что такое Last-Modified и If-Modified-Since, зачем они нужны и как правильно настроить их в WordPress.

Что такое Last Modified
Это один из ответов сервера при открытии любой страницы Вашего сайта. Он содержит в себе дату последнего изменения страницы в определенном Unix-формате.
Поисковые системы смотрят этот заголовок во время индексации перед тем, как скачать страницу и сравнивают с уже существующей записью у них. Если ничего не изменилось — поисковик пропускает страницу и переходит к следующей. Если есть изменения — он скачивает её заново и проверяет, что изменилось.
Что такое If-Modified-Since
Это заголовок, который посылает поисковая система, содержащий дату последней индексации страницы. Наш сайт на этот заголовок должен правильно среагировать — отдать правильный ответ. Если страница не была изменена за это время — дать ответ 304 Not Modified, который скажет поисковой системе, что страница не менялась и можно переходить к следующей. В случае, если страница была обновлена — отдать ответ 200 OK
Как же это влияет на индексацию?
Поисковик за раз может пройти только определенное количество страниц на Вашем сайте и, если он будет каждую выкачивать и проверять на изменения, лимит быстро закончится и часть страниц он просто не успеет проверить. В индекс попадет значительно меньше новых страниц, чем могло быть. Особенно это актуально тогда, когда количество страниц переходит за тысячу.
Если поисковик видит, что изменения не было — он просто пропускает страницу и сразу переходит к следующей.
- Таким образом он может за раз пройти больше страниц
- Объем новых страниц, попадающих в индекс, увеличивается
- Нагрузка на Ваш сайт снижается (т.к. поисковик не выкачивает страницы без изменений)
- Поисковик при сортировке результатов выдачи по дате начнет показывать Ваш сайт
Вот, что пишет у себя Яндекс по поводу Last Modified, если такой заголовок не отдается:
- в результатах поиска не будет показываться дата рядом со страницами вашего сайта;
- при сортировке по дате сайт не будет виден большинству пользователей
- робот не сможет получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. А так как число страниц, получаемых роботом с сайта за один заход, ограничено, изменившиеся страницы будут переиндексироваться реже.
Вывод: корректно отдавать заголовок Last-Modified и обрабатывать If-Modified-Since желательно, особенно на крупных сайтах. Это помогает поисковым роботам эффективнее обходить страницы и одновременно снижает нагрузку на сервер.

Проверить Ваш сайт можно по ссылке.
Как добавить Last Modified?
Интернет пестрит такого рода решениями:
header("Last-Modified: " . date('r',strtotime($post->post_modified)));
Или ковырянием в ядре движка. Оба варианта не подходят. Объясним почему.
Первый вариант предлагается добавлять в header.php. Какие здесь минусы:
- Это сработает только для записей и страниц, не будет работать для архивов (категорий, тегов, таксономий), для главной
- На всех страницах, кроме записей и страниц, переменная $post отсутствует, что тоже приведет к ошибке
- Если раньше заголовки уже отдались, это приведет к фатальной ошибке, необходима проверка
- Данный код нужно вызывать хуками, а не напрямую в коде
- Не учитывает добавленные комментарии
Второй вариант сразу отпадает и никогда таким не занимайтесь. Лезть в код ядра НЕЛЬЗЯ! При обновлении — все Ваши правки сотрутся.
А разве WordPress не делает это сам?
В современных версиях WordPress уже есть собственная поддержка HTTP-кэширования. Ядро WordPress умеет работать с Last-Modified, ETag, If-Modified-Since и возвращать 304 Not Modified в соответствующих случаях.
Однако фактическое поведение сайта зависит не только от WordPress, но и от темы, плагинов, кеширующего слоя, CDN и настроек сервера. Поэтому наличие заголовка и корректность ответа лучше проверять непосредственно на сайте.
Почему необходим If-Modified-Since?
При повторном посещении Вашего сайта поисковая система добавить к запросу заголовок If-Modified-Since и не получив ответа 304 Not Modified — она будет заново выкачивать страницу и сравнивать её. Одним Last-Modified не отделаться. Поисковик должен именно получить ответ на вопрос: «менялась ли страница с».
Как добавить If-Modified-Since
Для этого нужно смотреть наличие $_SERVER['HTTP_IF_MODIFIED_SINCE'] и сравнивать его с датой последнего изменения страницы. Если изменения были — отдать ответ 200, если изменений не было — отдать ответ 304.
Кроме Last-Modified / If-Modified-Since, HTTP-кэширование может работать через пару заголовков ETag / If-None-Match. Современный WordPress использует оба механизма.
Как проверить, работает ли у меня Last Modified?
Создайте у себя на хостинге файл с содержимым:
Откройте его в браузере и проверьте заголовки.
Где найти правильное рабочее решение?
Мы полностью переработали это решение, добавили различные проверки на ошибки, переписали код через хуки, добавили вывод не только для постов, но и для главной, для категорий, тегов, таксономий и всех остальных архивов. Добавили проверку на новые комментарии, они обновляют дату изменения.
И все это мы упаковали в одну из функций нашего плагина — Clearfy. Проверьте описание плагина — это настоящий комбайн полезных улучшений Вашего блога по минимальной цене.
Результат работы плагина Clearfy:

Это всё конечно хорошо, но толку от этого ноль, пока плагин If-Modified-Since обрабатывать не начнёт.
Спасибо! Принял, разберемся, добавим.
Обновили плагин, теперь он правильно обрабатывает If-Modified-Since
Я обычно делаю очень просто: как на своих обычных сайтах так и на дорвеях:
Перед доктайпом ставлю Ласт Модифайд который равен time*(), а в сайтмапе ставлю = сегодняшнему числу. Это я скажу очень сильно помогает. Например был проект один в индексе. Я добавил вот все это и через несколько дней индекс стал шире.
Здравствуйте! После включения функции «Отдавать ответ If-Modified-Since» перестал работать счетчик просмотров плагина «WP-PostViews».
Проблема была связана с тем, что браузер тоже видел ответ If-Modified-Since и показывал свою кешированную версию страницы. Сегодня в обновлении этот момент мы уже пофиксили — теперь авторизованным пользователям будет показываться как и раньше (с кодом 200), а для посетителей и поисковых систем будет 304 Not Modified.
Поставил плагин, проверил — вроде все работает. Посмотрим как повлияет на индексацию. у меня конечно меньше 1000 страниц в индексе.
Как Last-Modified влияет на перелинковку, допустим если я через пару месяцев после размещения статьи сделал перелинковку при помощи плагина, при проставлении которой дата документа не обновилась, как робот узнает о ней, будет ли он учитывать эту перелинковку и каким образом?
Здравствуйте!
1. Скажите, пожалуйста, плагин Clearfy не будет конфликтовать с уже установленным iThemes Security?
2. Если у меня на блоге сделана микроразметка Schema.org, закрыты ссылки в комментариях, удалены дубли страниц и ещё много чего там сделали (я особо не силён в этой теме), то как будет вести себя плагин Clearfy? Меня волнует, что бы не было перебора во всей этой оптимизации. Буду признателен за ответ.
Я так понимаю, ваш плагин берет дату сохранения/изменения самого поста, а не обновления его кеша? Как он дружит с WP Super Cashe и иже с ними?
Последние два дня борюсь с невыдачей заголовков last modified для закешированных html-страниц wordpressa. Изображения, стили и скрипты 304 выдают, сама страница — ни в какую
Здравствуйте. К сожалению для сайта на https включение в настройках раздела «Seo» функции If-Modified-Since нужного результата при проверке через сервис https://last-modified.com/ru/ не приносит. В результате проверки пишет что 304 Not Modified не найден!
Получается что отмеченная настройка не срабатывает. Безболезненно для сайта вносить правки в код способен далеко не каждый. Была большая надежда на данную функцию в плагине, однако сервис проверки упорно не замечает 304 заголовок. Очень жаль, функция чрезвычайно важная для продвижения.
Спасибо.
С Уважением.
Кажется не очень корректно работает if modified since с подключенным cloudflare.
Здравствуйте, подскажите когда я проверяю у вас мне показывает, что результат провален. А если проверяю в Явебмастере или https://page-speed.ru/tests/last-modified/ то всё показывает хорошо, всё работает. Скажите в чём может быть дело ? Страница : https://pozdravims.ru/kartinki-i-otkrytki-s-dnyom-rozhdeniya-alyona/