Кэширование ускоряет сайт, когда WordPress отдаёт посетителю сохранённую копию страницы вместо того, чтобы собирать её заново при каждом запросе. Проблемы начинаются, если одна и та же копия показывается разным пользователям или кэшируется страница, содержимое которой должно меняться после входа, отправки формы или другого действия.
Для большинства сайтов безопасная схема такая: включить кэширование публичных страниц, не кэшировать запросы авторизованных пользователей и административную часть, а страницы с персональными или часто меняющимися данными исключить по адресу. После этого проверить сайт не только в браузере администратора, но и в приватном окне. Кэш может работать в плагине, на сервере и в CDN одновременно, поэтому настройки нужно проверить на каждом уровне.
Сначала определите, какой кэш включён на сайте
Под словом «кэш» часто объединяют разные механизмы. Они ускоряют сайт по-разному и требуют разных настроек.
- Кэш страниц сохраняет готовый HTML и отдаёт его без повторного запуска WordPress. Это обычно заметнее всего ускоряет публичные страницы.
- Объектный кэш хранит результаты отдельных запросов и вычислений, например в Redis или Memcached. Он не заменяет кэш страниц и сам по себе не исключает выдачу старой готовой страницы.
- Кэш браузера помогает повторно загружать изображения, стили и скрипты. Обычно он не кэширует HTML страницы.
- Кэш CDN или хостинга может сохранять страницы за пределами WordPress. Очистки кэша в плагине недостаточно, если копия осталась на сервере или в CDN.
Уточните у хостинга, включён ли серверный кэш, и проверьте панель CDN, если она используется. Затем выберите один основной механизм кэширования страниц. Одновременная работа нескольких плагинов или сервисов с полностраничным кэшем часто приводит к непредсказуемому результату: один слой сохраняет страницу, которую другой уже обновил.
Объектный кэш и кэш статических файлов могут работать вместе с кэшем страниц. Но их параметры нельзя считать взаимозаменяемыми. Например, очистка кэша страниц не обязательно очищает объектный кэш, а смена настроек CDN не отключает кэширование в плагине.
Базовая настройка: кэшировать публичные страницы
В настройках выбранного плагина или панели хостинга включите кэш страниц для обычных посетителей. Названия параметров зависят от инструмента: это могут быть «Page cache», «Кэширование страниц» или «Cache». Не включайте сразу все дополнительные функции оптимизации — сначала убедитесь, что базовое кэширование работает корректно.
Как правило, кэш страниц не должен обслуживать запросы вошедших в систему пользователей. В настройках оставьте включённым обход кэша для авторизованных пользователей. Это особенно важно для редакторов и администраторов: так они видят актуальные изменения, персональные элементы интерфейса и административную панель, а не сохранённую публичную версию.
Сам /wp-admin/ не является обычной публичной страницей, и стандартный кэш страниц обычно не сохраняет его как HTML для анонимных посетителей. Но это не повод игнорировать настройки: серверный кэш и CDN могут быть настроены отдельно. Убедитесь, что они не кэшируют административные запросы и страницу входа /wp-login.php. Не включайте кэширование для вошедших пользователей, если не знаете, как плагин разделяет данные разных аккаунтов.
Если на сайте используется CDN, проверьте его правила кэширования HTML. Для начала не задавайте принудительное «кэшировать всё» для всего домена. Если CDN кэширует только статические файлы, он обычно не вмешивается в работу форм и личных страниц. Если он сохраняет HTML, добавьте исключения для административных и персональных маршрутов средствами конкретного CDN.
Какие страницы исключить из кэша
Исключайте не страницы «на всякий случай», а те, где содержимое зависит от пользователя, запроса или свежих данных. В настройках плагина такие правила обычно задаются по URL или маске пути. Синтаксис отличается, поэтому сверяйтесь с документацией именно используемого инструмента.
- Личный кабинет и профили. Страница с данными конкретного пользователя не должна показываться другим посетителям из общего кэша.
- Результаты поиска и фильтров. Если результат зависит от параметров запроса, проверьте, как кэш обрабатывает URL с параметрами. Не разрешайте выдавать один сохранённый результат для разных запросов.
- Страницы, которые меняются после действия пользователя. Например, экран с результатом заполнения формы или статусом заявки, если он отображает персональные данные.
- Страницы с формами, если их плагин не гарантирует совместимость с кэшем. Сама форма иногда продолжает работать на кэшированной странице, но это нужно проверить: срок действия защитного токена или nonce может быть ограничен.
Не обязательно исключать из кэша каждую страницу с контактной формой. Если форма отправляется через обработчик или AJAX и плагин поддерживает кэширование, её можно оставить кэшируемой. Но после включения кэша отправьте тестовую заявку, проверьте сообщение об успехе и убедитесь, что форма продолжает принимать отправки спустя некоторое время. Если появляются ошибки проверки формы или устаревшие данные, исключите URL страницы из кэша либо настройте совместимый способ обновления формы.
При исключении используйте фактический путь страницы, например /account/, а не название шаблона в админке WordPress. После изменения правила очистите кэш: ранее сохранённая копия может продолжать выдаваться, даже если новые запросы уже должны обходить кэш.
Как настроить и проверить кэш без риска для сайта
- Зафиксируйте исходное состояние. Запишите текущие настройки кэширования и выясните, есть ли серверный кэш или CDN. Если сайт рабочий и настройки хостинга неясны, сначала уточните их у поддержки.
- Оставьте один механизм кэширования страниц. Отключите дублирующие плагины или правила, если они выполняют ту же функцию. Не удаляйте плагины наугад: сначала сохраните настройки и выясните, не управляют ли они другими функциями сайта.
- Включите кэш для публичных страниц. Оставьте обход для авторизованных пользователей и не включайте режим кэширования страниц для вошедших в систему, пока отдельно не проверите его поведение.
- Добавьте нужные исключения. Укажите личные, динамические и проблемные страницы в правилах плагина или CDN. Не вставляйте один и тот же список без проверки: маршруты сайта и синтаксис правил у разных инструментов отличаются.
- Очистите все уровни кэша. Используйте очистку в плагине и, если применимо, в панели хостинга и CDN. Очистка только одного слоя не гарантирует, что посетитель получит свежую страницу.
- Проверьте результат как посетитель и как администратор. Откройте сайт в приватном окне, затем войдите в WordPress в обычном. Проверьте, что публичная страница обновляется после очистки, а административные действия и персональные данные работают корректно.
Если вы меняете серверные правила вручную, сначала сохраните исходный файл конфигурации и убедитесь, что у вас есть доступ к панели хостинга или файловому менеджеру. Ошибка в конфигурации веб-сервера может сделать сайт недоступным. Для стандартной настройки обычно достаточно панели плагина, поэтому без необходимости редактировать серверные файлы не нужно.
Как понять, что конфликтует именно кэш
Типичный признак — изменения не видны в приватном окне, хотя в админке они уже опубликованы. Очистите кэш WordPress, хостинга и CDN, затем проверьте страницу снова. Если после очистки проблема исчезает, но возвращается, когда кэш наполняется заново, проверьте правила кэширования URL, параметров запроса и cookies.
Если форма не отправляется, тестируйте её отдельно от кэша: сначала очистите кэш, затем откройте страницу в приватном окне и отправьте тестовые данные. Если ошибка повторяется, временно исключите страницу из кэширования. Когда форма заработает, проверьте документацию её плагина и настройте более точное исключение или совместимый режим. Не отключайте защиту формы ради устранения ошибки: проблема может быть не только в кэше.
При проблемах со входом проверяйте страницу входа и административную часть отдельно. Удаление cookies сайта может помочь отличить устаревшие данные браузера от ошибки сервера, но не меняйте настройки авторизации и не отключайте защитные механизмы без понимания причины. Если панель управления остаётся недоступной после очистки кэша, это уже не обязательно проблема кэширования — проверьте сообщения об ошибках WordPress и обратитесь к поддержке хостинга.
Рабочая схема для большинства сайтов
Для обычного сайта начните с кэша публичных страниц в одном плагине или в системе хостинга. Оставьте обход кэша для авторизованных пользователей, не кэшируйте административные маршруты, а личные и зависящие от данных страницы внесите в исключения. Формы не исключайте автоматически: проверьте отправку и поведение защитных токенов, а при ошибках настройте исключение для конкретной страницы.
После настройки проверяйте изменения в приватном окне и не забывайте очищать кэш на всех уровнях, включая CDN. Такая схема ускоряет публичную часть сайта, но не подменяет актуальные данные в админке, формах и персональных разделах.