wplog.ru wordpress wplog.ru

Как найти и убрать слабые места в кэше WordPress

Кэш в WordPress обычно ломается не «вообще», а в конкретных местах: главная обновилась, а архивы и карточки записей показывают старую версию; после правки шаблона не меняется HTML; у части пользователей видны старые стили; в админке всё ок, а на фронте — нет. В таких случаях важно не просто «очистить всё», а понять, какой именно слой кэша мешает: плагин, сервер, CDN или браузер.

Ниже — рабочий сценарий диагностики и исправления без лишних движений. Он подходит для обычного WordPress-сайта, где есть кэш-плагин, а иногда ещё и серверный кэш или Cloudflare.

Как понять, что проблема именно в кэше

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

Признаки, которые чаще всего указывают на кэш

  • после обновления записи на сайте остаётся старый заголовок, текст или мета-данные;
  • CSS/JS изменили, но фронт продолжает показывать прежний вид;
  • одни URL обновляются, а другие — нет;
  • после очистки кэша в админке проблема исчезает, но потом возвращается;
  • на мобильных и десктопе разное поведение из-за CDN или отдельного кэша устройства.

Если у вас подключён плагин кэширования, проверьте, не включено ли одновременно несколько механизмов: например, плагин + серверный кэш + CDN. Именно из-за этого очистка «в одном месте» не даёт результата.

Диагностика: где именно застряла старая версия

Перед очисткой полезно посмотреть HTTP-заголовки. Они часто сразу показывают, отдаётся ли страница из кэша. Для проверки можно использовать curl:

curl -I https://example.com/

Ищите заголовки вроде cache-control, cf-cache-status, x-cache, x-litespeed-cache. Они не всегда одинаковые, потому что зависят от хостинга и CDN, но сам факт наличия кэша обычно виден.

Если вы работаете на сервере с Nginx или LiteSpeed, полезно сравнить:

  • что видит обычный посетитель;
  • что видит авторизованный пользователь;
  • что показывает страница после принудительной очистки кэша плагина;
  • меняется ли ответ после добавления случайного параметра к URL, например ?v=123.

Если с параметром страница обновляется, а без него — нет, это почти всегда проблема кэш-слоя, а не WordPress-логики.

Что делать: пошаговое решение

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

Шаг 1. Очистите кэш в плагине

Если у вас установлен плагин кэширования, сначала используйте его штатную очистку. У большинства решений есть кнопка purge/delete cache в админке. После этого откройте проблемную страницу в инкогнито и проверьте, исчезла ли старая версия.

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

Шаг 2. Очистите серверный кэш и CDN

Если сайт стоит за Cloudflare, Fastly или другим CDN, очистка только в WordPress не поможет. Нужен purge на стороне CDN. То же самое относится к серверному кэшу у хостинга: у некоторых панелей есть отдельная кнопка сброса.

Практика простая: если после очистки в WordPress страница не меняется, но через несколько минут или после ручного purge на CDN всё приходит в норму, значит проблема была не в плагине.

Шаг 3. Проверьте исключения для динамических страниц

Не все страницы должны кэшироваться одинаково. Обычно исключают:

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

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

Шаг 4. Сбросьте только нужные объекты, если проблема локальная

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

В WordPress это можно сделать программно, если вы пишете собственную интеграцию. Например, после сохранения записи можно удалить transient или сбросить объектный кэш для конкретного ID:

add_action('save_post', function ($post_id, $post, $update) {
    if (wp_is_post_revision($post_id) || wp_is_post_autosave($post_id)) {
        return;
    }

    clean_post_cache($post_id);
}, 10, 3);

Этот код не заменяет кэш-плагин, но помогает, если у вас есть собственная логика, завязанная на сохранение контента.

Сравнение подходов: плагин, код или хостинг

ПодходКогда подходитМинус
Очистка через плагинОбычный сайт, где кэш управляется из админкиНе затрагивает CDN и серверный кэш
Очистка через хостинг/CDNЕсть отдельный слой кэша вне WordPressНужно понимать, где именно хранится копия
Код через хукиНужна автоматическая очистка при обновлении контентаТребует аккуратной настройки и тестирования

Пример: автоматическая очистка кэша после обновления записи

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

add_action('save_post_post', function ($post_id, $post, $update) {
    if (wp_is_post_revision($post_id) || wp_is_post_autosave($post_id)) {
        return;
    }

    if (function_exists('wp_cache_flush')) {
        // Используйте осторожно: полный flush подходит не для всех сайтов.
        // Лучше ограничиваться очисткой конкретных сущностей, если это возможно.
    }

    clean_post_cache($post_id);
}, 10, 3);

Важно: полный wp_cache_flush() на живом сайте — это грубый инструмент. Он может временно увеличить нагрузку, потому что кэш начнёт прогреваться заново. Для большинства задач лучше чистить точечно.

Проверка результата после внедрения

После очистки кэша не ограничивайтесь визуальной проверкой в одной вкладке. Проверьте несколько вещей:

  • страница открывается без старой версии в инкогнито;
  • заголовки ответа изменились так, как вы ожидаете;
  • обновлённый CSS/JS реально подхватился;
  • авторизованный и неавторизованный пользователь видят корректные версии страниц;
  • если есть CDN, purge сработал и на его стороне.

Для CSS и JS удобно добавлять версионирование через filemtime(). Тогда браузер не будет держать старый файл после деплоя:

wp_enqueue_style(
    'theme-style',
    get_stylesheet_uri(),
    array(),
    filemtime(get_stylesheet_directory() . '/style.css')
);

Это не лечит серверный кэш, но помогает убрать классическую проблему «я обновил файл, а браузер показывает старый стиль».

Частые ошибки и как их исправить

Очистили кэш только в одном месте

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

Слишком агрессивный полный flush

Полная очистка всего кэша на каждом сохранении записи может просаживать производительность. Для контентных сайтов лучше точечная очистка: запись, её архивы, связанные таксономии.

Кэшируются страницы, которые должны быть динамическими

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

Проверка только в уже открытой вкладке

Браузер может держать не только кэш страницы, но и ресурсы. Поэтому проверяйте в инкогнито и, если нужно, через curl или другой HTTP-клиент.

Практические советы по безопасности и производительности

Кэш — это не только про скорость. Неправильная настройка может случайно показать не тот контент не тому пользователю. Поэтому:

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

Если вам нужен более широкий набор инструментов для технической чистки WordPress, иногда удобнее смотреть в сторону решений, которые закрывают сразу несколько задач: удаление дублей, оптимизация и базовая гигиена сайта. Например, у Clearfy Pro есть набор функций для технической настройки WordPress: https://wpshop.ru/plugins/clearfy.

Главная мысль простая: если кэш ведёт себя странно, не лечите симптом наугад. Сначала определите слой, потом очистите именно его и только после этого проверяйте результат на реальном URL, а не в уже открытой вкладке.

×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙