Ситуация типовая: вы меняете настройки, сохраняете запись или обновляете плагин, а в админке видите старые данные, странные задержки или несоответствие между тем, что уже сохранено в базе, и тем, что показывает интерфейс. Чаще всего проблема не в самом WordPress, а в кешировании на уровне плагина, сервера или прокси. Для публичной части сайта кеш полезен, но для wp-admin и wp-login.php он обычно только мешает.
Ниже — практический разбор, как найти источник кеша, отключить его для админки и проверить, что изменения действительно применились. Без лишней теории: только то, что можно проверить на живом сайте.
Когда кеш в админке становится проблемой
Если кеш затронул административные страницы, симптомы обычно заметны сразу. После сохранения настроек вы видите старое значение, список записей не обновляется, в редакторе не подгружаются свежие метаданные, а иногда WordPress просит повторно войти в систему или выбрасывает из сессии после возврата на страницу.
Отдельный признак — когда проблема проявляется не у всех пользователей. Например, у администратора в одной сети всё работает, а у редактора на другом браузере данные «залипают». Это часто указывает на комбинацию браузерного кеша, плагина кеширования и серверного кеша.
Что именно может кешироваться
- страницы
/wp-admin/и отдельные экраны настроек; - ответы
admin-ajax.phpи REST-запросы, если их неправильно проксирует сервер; - HTML-страницы входа
/wp-login.php; - объекты в памяти, если используется persistent object cache и он настроен некорректно;
- браузерный кеш, когда админка отдается с неподходящими заголовками.
Диагностика: где именно сидит кеш
Прежде чем что-то отключать, важно понять, какой слой виноват. Иначе можно выключить кеш на сайте целиком и не решить проблему. Начинать стоит с самого простого: проверить заголовки ответа и поведение в приватном окне.
Проверка заголовков ответа
Откройте проблемную страницу админки и посмотрите заголовки ответа в DevTools или через curl. Если в ответе есть признаки кеширования, это уже зацепка.
curl -I https://example.com/wp-admin/На что смотреть:
Cache-Control— для админки обычно не должно быть агрессивного кеширования;Expires— если стоит далеко в будущем, это подозрительно;Age— ненулевое значение часто говорит о промежуточном кеше;- заголовки CDN или прокси, например от Cloudflare или nginx reverse proxy.
Проверка плагинов кеширования
Если у вас установлен плагин кеша, сначала проверьте его настройки. У многих решений есть исключения для /wp-admin/, /wp-login.php и запросов авторизованных пользователей. Но иногда исключение отключено, слетело после обновления или было задано только для главной страницы.
Если используется Clearfy Pro, полезно проверить разделы, связанные с чисткой сайта и технической оптимизацией: иногда проблема не в полном кешировании, а в конфликте с оптимизацией скриптов, которая ломает поведение админки. В таких случаях важно не просто «выключить всё», а точечно исключить административные URL и скрипты.
Как отключить кеширование для wp-admin и wp-login.php
Самый безопасный подход — не трогать кеш сайта целиком, а исключить административные страницы из кеширования на уровне сервера или плагина. Если у вас есть доступ к конфигурации веб-сервера, это надежнее, чем надеяться на настройки темы или случайные фильтры.
Вариант 1: исключение через nginx
Если сайт работает на nginx, можно запретить кеширование для административных URL на уровне location. Пример зависит от вашей схемы, но логика обычно такая: для /wp-admin/ и /wp-login.php отдавать ответ без кеша.
location ~* ^/(wp-admin/|wp-login\.php) {
add_header Cache-Control "no-store, no-cache, must-revalidate, max-age=0" always;
add_header Pragma "no-cache" always;
expires off;
try_files $uri $uri/ /index.php?$args;
}Это не универсальный готовый блок для любого сервера, а рабочий ориентир. Перед применением проверьте, как у вас устроены остальные location и не конфликтует ли правило с PHP-FPM обработкой.
Вариант 2: исключение через .htaccess
На Apache можно добавить заголовки без кеша для административных страниц. Это не всегда решает проблему с внешним кешем, но помогает убрать агрессивное кеширование на уровне веб-сервера или браузера.
<IfModule mod_headers.c>
<FilesMatch "^(wp-login\.php)$">
Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
Header set Pragma "no-cache"
</FilesMatch>
</IfModule>Для wp-admin через .htaccess обычно удобнее работать точечно в зависимости от структуры проекта и правил хостинга. Если хостинг жестко управляет конфигурацией, лучше использовать настройки кеш-плагина или обратиться в поддержку.
Вариант 3: настройки плагина кеша
Если кеш идет через плагин, ищите исключения по URL, cookies или ролям пользователей. Для админки важно, чтобы:
- страницы авторизованных пользователей не отдавались из общего кеша;
/wp-admin/и/wp-login.phpбыли в списке исключений;- AJAX и REST-запросы не кэшировались как обычный HTML;
- после очистки кеша плагин не восстанавливал старые правила из шаблона.
Если плагин умеет «не кешировать для вошедших пользователей», этого обычно достаточно, но только если он корректно распознает сессии и cookies. На практике лучше проверить это вручную, а не полагаться на галочку в интерфейсе.
Если проблема не в HTML-кеше, а в объектном кеше
Иногда админка показывает старые данные из-за persistent object cache: Redis или Memcached. Это не HTML-кеш, а кеш объектов WordPress. Он полезен на нагруженных сайтах, но при ошибках конфигурации может удерживать устаревшие значения дольше, чем нужно.
Признак такой проблемы — после очистки страницы в браузере данные не меняются, но в базе они уже обновлены. В этом случае стоит проверить, нет ли конфликтов между объектным кешем и плагинами, которые активно используют transient API или собственные кэши.
Что проверить в первую очередь
- активен ли drop-in
object-cache.php; - не менялся ли хостингом сервер Redis/Memcached;
- не очищается ли кеш только частично;
- нет ли у плагина отдельной кнопки сброса object cache;
- не остались ли старые transient-значения после миграции сайта.
Если вы не уверены, что именно кешируется, временно отключите object cache на тестовой копии сайта и сравните поведение. На боевом проекте лучше сначала сделать резервную копию.
Пошаговое решение без лишнего риска
- Проверьте, повторяется ли проблема в приватном окне и после очистки браузерного кеша.
- Посмотрите заголовки ответа для
/wp-admin/и/wp-login.php. - Отключите кеширование административных URL в плагине кеша или на сервере.
- Если используется Redis/Memcached, проверьте object cache и transient-данные.
- Очистите кеш на всех уровнях: плагин, сервер, CDN, браузер.
- Повторно откройте проблемный экран и сравните данные с базой или логикой сохранения.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Просто «страница открылась» недостаточно: важно убедиться, что админка больше не отдает устаревший ответ.
- в
curl -Iдля административных URL нет агрессивных заголовков кеша; - после сохранения настроек страница показывает новые значения без ручной очистки;
- в DevTools у ответа нет признаков промежуточного кеша;
- вход в админку не сбрасывается после перехода между экранами;
- если есть CDN, он не кэширует HTML для авторизованных пользователей.
Хорошая практика — сравнить поведение до и после на одном и том же экране. Например, изменить параметр в настройках, сохранить, открыть страницу в новой вкладке и убедиться, что данные совпадают без принудительного обновления.
Частые ошибки и как их исправить
Отключили кеш на всём сайте вместо исключения админки
Это самая дорогая ошибка. Публичная часть сайта теряет скорость, а проблема в админке может остаться, если виноват не HTML-кеш, а объектный кеш или CDN. Исправление простое: верните кеш для фронтенда и оставьте исключения только для административных URL.
Очистили только плагин кеша
Если у вас есть серверный кеш, CDN или reverse proxy, очистка одного слоя ничего не даст. Нужно сбрасывать цепочку целиком: плагин, сервер, CDN, а затем проверять браузер.
Не учли авторизованных пользователей
Некоторые кеширующие решения плохо разделяют гостей и вошедших пользователей. В результате админка может получать HTML, рассчитанный на гостя. Исправление — исключить кеширование для авторизованных сессий и проверить cookies, по которым плагин определяет пользователя.
Списали проблему на WordPress, хотя виноват CDN
Если сайт за Cloudflare или другим прокси, заголовки ответа могут меняться уже на внешнем уровне. В таком случае локальная правка в WordPress не поможет. Сначала смотрите, где именно появляется кеш, и только потом меняйте конфигурацию.
Что учитывать для безопасности и производительности
Отключать кеш в админке нужно аккуратно. Нельзя просто запретить все оптимизации подряд: это может сломать загрузку скриптов, работу редактора и AJAX. Лучше разделять публичную и административную части сайта.
- не кэшируйте
wp-adminиwp-login.phpкак обычный HTML; - не трогайте кеш для фронтенда без необходимости;
- проверяйте, не ломает ли оптимизация JS загрузку Gutenberg или классического редактора;
- после изменений тестируйте вход, сохранение записей и обновление настроек;
- если используете несколько слоев кеша, документируйте, где лежит исключение, чтобы оно не потерялось при обновлении.
Если вам нужно регулярно чистить сайт от технического мусора и при этом не задевать рабочие механизмы WordPress, имеет смысл использовать инструменты, где можно отдельно управлять дублями, кешем и служебными настройками. В экосистеме Clearfy это как раз тот сценарий, где важна не «магия ускорения», а контроль над тем, что именно отключается и почему.
| Способ | Когда подходит | Минус |
|---|---|---|
| Настройки плагина кеша | Если проблема только в HTML-кеше | Не всегда решает серверный или object cache |
| Правка nginx/Apache | Если нужен жесткий контроль над заголовками | Требует доступа к конфигу и аккуратности |
| Отключение object cache | Если устаревают данные из Redis/Memcached | Может снизить производительность на нагруженном сайте |
Если после всех проверок админка по-прежнему показывает старые данные, не стоит гадать. Снимите заголовки ответа, проверьте цепочку кеширования и сравните поведение на чистой тестовой копии. В WordPress такие проблемы почти всегда локализуются, если смотреть на них по слоям, а не пытаться лечить сайт целиком.