
Почему Last-Modified в Clearfy Pro ломает избранное и корзину WordPress: правильная настройка
Разбираем коварную проблему, когда удалённые из корзины или избранного товары внезапно возвращаются при обновлении страницы. Объясняем, как опция «Автоматически проставить Last Modified» в Clearfy Pro отдаёт браузеру заголовок 304 Not Modified, блокируя рендеринг свежих cookies, и как правильно настроить исключения для динамических страниц магазина.

При оптимизации интернет-магазинов и динамических сайтов на WordPress веб-мастера часто включают все доступные функции ускорения и SEO «на автомате». Одной из таких коварных функций является опция «Автоматически проставить Last Modified» в популярном плагине Clearfy Pro (раздел SEO).
Включение этого параметра может приводить к трудноуловимым багам: удалённые из избранного или корзины товары внезапно возвращаются при перезагрузке страницы, пользовательские виджеты и личные кабинеты показывают устаревшие данные, а правки в интерфейсе упорно не обновляются. Разберёмся, почему это происходит и как правильно настроить Clearfy Pro.
Что делает заголовок Last-Modified и статус HTTP 304
По стандарту протокола HTTP механизм условного кэширования работает следующим образом:
- Сервер отправляет в HTTP-ответе заголовок
Last-Modified— точную дату и время последней модификации документа. - Браузер пользователя сохраняет полученный HTML и дату ответа в своём локальном дисковом кэше.
- При повторном визите на эту же страницу браузер добавляет к запросу заголовок
If-Modified-Sinceсо временем сохранённой версии. - Если сервер считает, что документ с тех пор не менялся, он не выполняет повторную генерацию страницы, а отдаёт быстрый ответ
304 Not Modifiedс пустым телом. - Браузер берёт старый HTML-код из своего локального кэша и отображает его пользователю.
Для контентных сайтов и блогов это действительно ускоряет индексацию поисковыми роботами (Яндекс и Google экономят краулинговый бюджет и быстрее обходят обновлённые страницы). Но для динамических проектов этот механизм таит смертельную ловушку.
Почему это ломает избранное, корзину и динамические сессии
WordPress по умолчанию рендерит страницы на лету, учитывая cookies сессии текущего пользователя. Когда в Clearfy Pro активна опция «Автоматически проставить Last Modified»:
- Плагин определяет дату изменения страницы по полю записи в базе данных —
post_modified. - Сама системная страница
/izbrannoe/(или/cart/,/wishlist/) создана один раз и администратором не редактировалась неделями. - Посетитель добавляет или удаляет товары из списка избранного (например, в теме Blocksy через cookie
blc_products_wish_list). - После удаления товара пользователь обновляет страницу или переходит в меню «Избранное».
- Браузер отправляет серверу запрос с заголовком
If-Modified-Since. - Хук Clearfy Pro сверяет дату запроса с датой
post_modifiedстраницы в базе данных, делает вывод, что «страница не редактировалась», и мгновенно возвращает304 Not Modified. - Результат: PHP даже не запускает генерацию страницы с новыми cookies! Браузер просто отображает старый закешированный снимок страницы, где удалённый товар по-прежнему на месте.
Именно поэтому кажется, что на сайте возник мистический сбой: сколько бы раз пользователь ни нажимал «удалить», после F5 товары упрямо появляются снова.
Как правильно настроить Clearfy Pro
В зависимости от структуры вашего сайта выберите один из двух вариантов.
Вариант 1. Полное отключение (рекомендуется для магазинов)
Если на вашем сайте есть WooCommerce, корзина, списки желаний, личные кабинеты или сложные AJAX-фильтры, отключите эту опцию целиком:
- В админ-панели перейдите в Настройки → Clearfy Pro.
- Откройте вкладку SEO.
- Переведите переключатель «Автоматически проставить Last Modified» в выключенное состояние (серый тумблер).
- Нажмите кнопку «Сохранить настройки».
Вариант 2. Настройка списка исключений
Если вы ведёте крупный статейный портал с небольшим каталогом и вам обязательно нужны заголовки Last-Modified для статей, добавьте все динамические разделы в поле «Исключить страницы:»:
/cart/
/checkout/
/izbrannoe/
/wishlist/
/my-account/
/cabinet/
/admin/
/wp-admin/
/s= Совет: указывайте маски путей со слэшами с двух сторон, чтобы исключить как саму страницу, так и возможные вложенные маршруты и параметры запросов.
Что сделать после изменения настроек
- Очистите кэш плагинов оптимизации: если у вас установлен FlyingPress, WP Rocket или LiteSpeed Cache, выполните полную очистку кэша (Purge All Cache).
- Сбросьте локальный кэш браузера: нажмите
Ctrl + F5(на Windows) илиCmd + Shift + R(на macOS), либо откройте страницу в режиме инкогнито. - Проверьте статус ответа: во вкладке Network инструментов разработчика (F12) адрес
/izbrannoe/должен отдавать статус200 OK, а товары в списке желаний и корзине должны обновляться мгновенно.

