На сайте с LearnPress кэш включать можно, но не наугад. Если закэшировать личный кабинет, страницу урока с динамическим прогрессом или формы, завязанные на авторизацию, пользователь начнёт видеть чужие данные, старый статус прохождения или кнопки, которые не работают после входа. Поэтому задача не в том, чтобы «выключить кэш для всего сайта», а в том, чтобы оставить быстрыми публичные страницы и исключить всё, что меняется от пользователя к пользователю.
Ниже разберём, какие типы кэша обычно безопасны для LMS на WordPress, какие страницы надо исключать и как проверить, что после настройки курсы, уроки и личный кабинет не сломались.
Что можно кэшировать, а что лучше не трогать
Для LearnPress безопаснее всего разделять кэш на два слоя: публичный и пользовательский. Публичный кэш ускоряет страницы, одинаковые для всех посетителей. Пользовательский кэш почти всегда опасен для LMS, потому что в учебном кабинете и на страницах уроков отображаются прогресс, кнопки продолжения, состояние прохождения и другие данные, зависящие от конкретного аккаунта.
Обычно можно кэшировать:
- главную страницу;
- страницы с описанием курсов;
- категории и архивы курсов;
- статические страницы вроде «О проекте», «Контакты», «Политика конфиденциальности»;
- изображения, CSS и JavaScript через браузерный кэш и кэш на стороне сервера/CDN.
Обычно нельзя кэшировать или нужно исключать из кэша:
- личный кабинет ученика;
- страницы входа и регистрации;
- страницу оформления заказа, если она есть в вашей связке;
- страницы уроков и разделы курса, где показывается прогресс, статус прохождения, кнопка «Продолжить» или другой персональный блок;
- любые страницы с формами, которые меняют состояние пользователя без перезагрузки.
Если сомневаетесь, ориентируйтесь на простой принцип: если на странице есть данные, которые могут отличаться у двух авторизованных пользователей, эту страницу лучше не отдавать из общего HTML-кэша.
Какие виды кэша обычно безопасны для LearnPress
Не все кэширование одинаково рискованно. Для сайта с LearnPress чаще всего нормально работают несколько типов кэша, если они настроены аккуратно.
Кэш браузера
Это самый безопасный вариант. Он ускоряет повторную загрузку файлов у посетителя: изображений, стилей, скриптов, шрифтов. На работу курсов и прогресса он обычно не влияет, потому что не подменяет HTML-страницы целиком.
Кэш страниц для гостей
Подходит для публичных страниц курса и статей, если плагин или сервер умеет исключать авторизованных пользователей и чувствительные URL. Для LMS это полезно, но только при корректных исключениях. Если кэшировать всё подряд, можно получить ситуацию, когда авторизованный ученик видит версию страницы, сохранённую для гостя.
Объектный кэш
Redis или Memcached могут ускорить работу WordPress и LearnPress без прямого кэширования HTML. Это хороший вариант для нагруженных сайтов, но он зависит от хостинга и серверной настройки. Сам по себе объектный кэш обычно безопаснее, чем агрессивный page cache, если плагин и сервер не кэшируют персональные ответы неправильно.
CDN
CDN полезен для статики: картинок, CSS, JS, видеофайлов, если они у вас размещены отдельно. Но HTML-страницы с личным кабинетом и уроками через CDN лучше не раздавать без понимания правил исключения. Для большинства владельцев LMS достаточно выносить в CDN только статические файлы.
Какие страницы LearnPress нужно исключить из кэша
Точный набор URL зависит от структуры сайта и настроек LearnPress, но логика одна: исключаем всё, что связано с авторизацией и персональным состоянием.
Проверьте и добавьте в исключения:
- страницу входа в аккаунт;
- страницу регистрации, если она есть;
- личный кабинет ученика;
- страницы «Мой профиль», «Мои курсы», «Мои заказы» и похожие разделы аккаунта;
- страницы уроков, если на них отображается прогресс, кнопка продолжения или статус прохождения;
- страницы тестов и заданий, если они завязаны на сессию пользователя;
- страницы благодарности, завершения оплаты или подтверждения действия, если они есть в вашей связке.
Если в LearnPress у вас есть отдельная страница курса, а уроки открываются внутри неё, саму страницу курса можно кэшировать для гостей. Но как только на ней появляется персональный блок для вошедшего пользователя, её уже нужно тестировать особенно внимательно. Часто проблема возникает не на курсе как таковом, а на виджете или шаблоне темы, который показывает прогресс и не должен попадать в общий кэш.
Как настроить исключения в популярных кэш-плагинах
Названия пунктов в интерфейсе отличаются, но смысл один: вы задаёте список URL, которые не должны кэшироваться, и отдельно указываете, что авторизованные пользователи не должны получать гостевую версию страницы.
В большинстве плагинов ищите разделы вроде Cache Exclusions, Never cache the following pages, Exclude Pages или Do not cache cookies. Туда обычно добавляют относительные URL или шаблоны адресов. Например, если личный кабинет расположен по адресу /account/, а страница входа — по /login/, именно эти пути и нужно исключить.
Если плагин умеет исключать по cookie, это тоже полезно. WordPress для авторизованных пользователей использует служебные cookie, и хороший кэш-плагин должен автоматически не кэшировать страницы для вошедших в систему. Но на практике я бы не полагался только на автоматическое поведение: для LMS лучше вручную проверить, что авторизованный пользователь не получает закэшированную гостевую страницу.
Если вы используете серверный кэш на уровне хостинга или nginx, исключения настраиваются там же, а не в WordPress. На shared-хостинге это часто делает поддержка. В таком случае дайте им список конкретных URL и объясните, что это личный кабинет и страницы уроков LearnPress, которые нельзя отдавать из общего HTML-кэша.
Практичная схема настройки без поломки обучения
Если нужен рабочий порядок действий, я бы делал так.
- Сначала включите только кэш статики: браузерный кэш, минификацию и отдачу CSS/JS через кэш-плагин или сервер.
- Проверьте сайт в обычном режиме, без авторизации.
- Добавьте исключения для личного кабинета, входа, регистрации и всех персональных URL.
- Если страницы курса показывают прогресс или кнопку продолжения, проверьте их отдельно и при необходимости тоже исключите.
- Только после этого включайте page cache для публичных страниц курса и блога.
- Протестируйте сайт как гость и как авторизованный ученик.
Такой порядок безопаснее, чем сразу включать агрессивный кэш на весь сайт и потом искать, почему у всех учеников «застыл» прогресс.
Как проверить, что кэш не ломает курсы и уроки
Проверка занимает немного времени, но экономит часы на разборе жалоб. Лучше тестировать не только главную страницу, а именно пользовательские сценарии LearnPress.
Проверьте следующее:
- гость открывает публичную страницу курса и видит её быстро;
- авторизованный пользователь входит в личный кабинет и видит свои данные, а не чужую или пустую страницу;
- после начала урока прогресс меняется и после обновления страницы остаётся корректным;
- кнопка продолжения урока ведёт туда, куда нужно, а не на старую закэшированную версию;
- если есть тесты или задания, результат отправляется без ошибок;
- после выхода из аккаунта пользователь снова видит гостевую версию сайта.
Полезно проверять сайт в двух браузерах или в обычном окне и в режиме инкогнито. Так проще увидеть, не отдаются ли авторизованным посетителям страницы, закэшированные для гостей.
Если есть доступ к заголовкам ответа, можно посмотреть, отдается ли страница из кэша. Для этого подойдёт любая проверка через инструменты разработчика браузера или команду curl -I https://example.com/страница/. Но для владельца сайта обычно достаточно практического теста сценариев входа, прохождения урока и обновления страницы.
Типичные ошибки, из-за которых LearnPress ломается после включения кэша
Чаще всего проблемы появляются не из-за самого кэша, а из-за слишком широких правил.
- Кэшируют личный кабинет. В итоге ученик видит не свои данные или не может обновить прогресс.
- Не исключают страницы входа и регистрации. После авторизации пользователь может вернуться на устаревшую версию страницы.
- Кэшируют страницы уроков без проверки персональных блоков. Кнопка продолжения, статус прохождения и таймеры начинают вести себя нестабильно.
- Включают агрессивную оптимизацию JavaScript без теста. Иногда ломаются кнопки отправки урока, тесты или переключение шагов.
- Очищают кэш только частично. После изменения курса старые версии страниц продолжают показываться ученикам и преподавателям.
Если после включения кэша что-то пошло не так, сначала временно отключите page cache, а уже потом ищите точную причину. Это быстрее, чем пытаться чинить сразу несколько слоёв оптимизации.
Что делать, если сайт уже работает через CDN или серверный кэш
Если кэш настроен не только в плагине WordPress, а ещё и на уровне хостинга, nginx, LiteSpeed или CDN, проверять нужно каждый слой отдельно. Частая ошибка — исключить страницу в плагине, но оставить её в серверном кэше или на CDN. В результате настройки в админке вроде бы правильные, а пользователь всё равно видит старую версию.
Для LMS лучше придерживаться простого правила: HTML для гостей можно кэшировать, HTML для авторизованных пользователей и персональных страниц — нет. Статика может жить в CDN и браузерном кэше без особых ограничений, если вы не подменяете ею динамические данные.
Если у вас сложная конфигурация и вы не уверены, где именно хранится кэш, начните с минимальной схемы: отключите лишние уровни, оставьте только кэш статики и аккуратно добавляйте page cache после тестов. Для сайта с курсами это обычно надёжнее, чем пытаться сразу выжать максимум скорости.
Если коротко: LearnPress нормально живёт с кэшем, когда вы кэшируете публичные страницы и статические файлы, но исключаете личный кабинет, вход, регистрацию и все страницы, где есть персональный прогресс. Именно это и защищает курсы и уроки от поломок после оптимизации.