Кэширование в WordPress: ускоряем сайт

Кэширование в WordPress: ускоряем сайт

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

Почему WordPress без кэша работает медленно

WordPress — динамическая система. Каждый раз, когда посетитель открывает страницу, сервер запускает PHP, загружает ядро, все активные плагины и тему, делает десятки, а иногда сотни запросов к базе данных, собирает HTML и только потом отдаёт его браузеру. Для одного посетителя это незаметно, но при сотне одновременных пользователей сервер начинает «задыхаться».

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

Уровни кэширования: от сервера до браузера

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

Страничный кэш

Самый эффективный уровень. Готовая HTML-страница сохраняется в файл или в память, и следующие посетители получают её без запуска PHP и обращения к базе. Реализуется плагином или на уровне веб-сервера. Именно он даёт главный прирост скорости ответа.

Объектный кэш

Сохраняет результаты запросов к базе данных и вычислений внутри WordPress. По умолчанию такой кэш живёт только в пределах одного запроса. Чтобы он сохранялся между запросами, нужно постоянное хранилище в оперативной памяти — его обычно предоставляет хостинг. Объектный кэш особенно полезен там, где страничный неприменим: в админке, в личном кабинете, в корзине магазина.

Кэш опкода PHP

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

Браузерный кэш

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

CDN

Сеть доставки контента хранит копии статических файлов, а иногда и целых страниц, на серверах в разных городах. Для сайтов с аудиторией по всей стране это сокращает задержку, а заодно снимает нагрузку с основного хостинга.

С чего начать: порядок действий

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

  1. Замерьте исходные показатели. Время ответа сервера, полная загрузка ключевых страниц, оценки сервисов проверки скорости. Без замера невозможно понять, что дало эффект.
  2. Узнайте, что предлагает хостинг. Многие хостинги имеют собственный серверный кэш и рекомендуют совместимый плагин. Два страничных кэша одновременно — частый источник конфликтов.
  3. Включите страничный кэш с базовыми настройками и проверьте сайт в режиме инкогнито: страницы, формы, поиск, корзину.
  4. Настройте браузерное кэширование статических файлов с долгим сроком хранения.
  5. Подключите объектный кэш, если хостинг это поддерживает, — особенно для магазинов и сайтов с личными кабинетами.
  6. Только потом переходите к объединению и минификации CSS и JavaScript, отложенной загрузке скриптов. Эти функции дают меньший эффект и чаще всего ломают вёрстку.

Что нельзя кэшировать

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

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

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

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

Одноразовые ключи и формы: скрытая ловушка

Отдельная проблема — защитные токены. WordPress и многие плагины форм вставляют в страницу одноразовый ключ, который подтверждает, что запрос отправлен с вашего сайта. У такого ключа есть срок жизни. Если страница хранится в кэше дольше этого срока, посетитель получает устаревший ключ, и форма отказывается отправляться с невнятной ошибкой.

Решений несколько: ограничить время жизни кэша, использовать формы, которые получают ключ отдельным запросом после загрузки страницы, или исключить страницы с важными формами из кэша. Похожим образом ведут себя капчи, счётчики просмотров и блоки «Сейчас на сайте».

Очистка кэша: когда и как

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

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

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

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

Чего кэш не исправит

Кэширование маскирует медлительность, но не устраняет её причины. Первый посетитель после очистки всё равно ждёт полной генерации страницы, админка продолжает тормозить, а корзина и оформление заказа, которые не кэшируются, работают со скоростью «голого» сайта. Если без кэша страница собирается несколько секунд, стоит искать корень проблемы:

СимптомВозможная причина
Медленно всё, включая админкуСлабый тариф хостинга, устаревшая версия PHP
Тормозит после установки плагинаТяжёлый плагин с лишними запросами к базе
Страница долго «дорисовывается»Огромные изображения, внешние шрифты и скрипты
База растёт, запросы замедляютсяТысячи ревизий, мусор в таблице настроек, логи плагинов

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

Вывод

Кэширование в WordPress — многоуровневая система: страничный кэш снимает основную нагрузку, объектный ускоряет динамические разделы, браузерный и CDN сокращают время повторной загрузки. Включайте уровни постепенно, замеряйте результат и обязательно проверяйте персональные страницы, формы и корзину. И помните: кэш — это ускоритель, а не лекарство. Если сайт медленный по своей природе, нужно разбираться с хостингом, плагинами и базой. Наши специалисты по администрированию проведут аудит производительности, настроят кэширование под ваш хостинг и проверят, что ускорение не сломало ни одной функции сайта.

Читайте также

Ещё несколько материалов из рубрики «WordPress»

Плагины, которые нужны почти каждому сайту
WordPress

Плагины, которые нужны почти каждому сайту

Разбираем минимальный набор плагинов WordPress, без которого не обходится почти ни один сайт: от SEO и бэкапов до форм и кэширования. Плюс таблица дополнительных расширений по типу сайта и правила проверки перед установкой.

Время чтения: 7 мин
Типичные ошибки WordPress и как их исправить
WordPress

Типичные ошибки WordPress и как их исправить

Белый экран, «На сайте возникла критическая ошибка», бесконечный режим обслуживания или 404 на всех страницах — у каждой поломки WordPress есть типичные причины. Рассказываем, как их диагностировать и что можно исправить самостоятельно.

Время чтения: 7 мин
SEO-настройки WordPress после запуска
WordPress

SEO-настройки WordPress после запуска

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

Время чтения: 7 мин

Остались вопросы?

Опишите задачу — специалисты студии ответят на почту и предложат решение для вашего сайта.

Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности сайта