Кэширование — один из ключевых инструментов для ускорения работы сайта на WordPress. Однако некорректная настройка или использование кэша часто приводит к проблемам: отображение устаревшего контента, конфликты с обновлениями, сбои в работе функционала. В этой статье разберём, как избежать типичных ошибок кэширования в WordPress, какие плагины использовать, и приведём практические примеры кода для тонкой настройки кэша.
Почему возникают проблемы с кэшированием в WordPress
Кэширование сохраняет сгенерированные страницы, стили, скрипты и другие данные, чтобы ускорить повторные обращения к сайту. Но при динамическом содержимом, частых изменениях контента или сложных пользовательских сценариях кэш может стать причиной:
- Отображения старых версий страниц и записей.
- Неправильной работы форм и скриптов.
- Проблем с авторизацией и сессиями.
- Конфликтов с другими плагинами, особенно кеширующими и оптимизирующими.
Поэтому важно грамотно настраивать исключения и обновление кэша.
Выбор и настройка плагина кэширования
Популярные плагины для кэширования в WordPress
Для большинства сайтов подходят следующие плагины:
- WP Super Cache — простой и мощный, подойдёт для новичков.
- W3 Total Cache — гибкий, с большим количеством настроек, поддерживает CDN.
- LiteSpeed Cache — отлично работает на серверах LiteSpeed, поддерживает оптимизацию изображений.
- WP Rocket — платный, но очень удобный и эффективный.
Для примера рассмотрим настройку WP Super Cache.
Правильная настройка WP Super Cache
После установки и активации:
- Перейдите в раздел
Настройки > WP Super Cache. - Включите кэширование и выберите режим «Простой» для начала.
- В разделе
Advancedвключите опции «Кэшировать страницы для посетителей, не авторизованных на сайте» и «Обработка кэша для пользователей, залогиненных в админке» — если нужно. - Добавьте исключения для страниц с динамическим контентом, например, страницы корзины, оформления заказа, личного кабинета.
Для исключения URL добавьте их в поле Rejected URLs, например:
/cart/
/checkout/
/my-account/Это позволит избежать кэширования страниц, где важна актуальность данных.
Кодовые примеры: как программно управлять кэшем
Принудительное очищение кэша при обновлении записи
Чтобы автоматически очищать кэш при обновлении поста, можно использовать хук save_post. Вот пример функции с префиксом wptalk_:
function wptalk_clear_cache_on_post_save( $post_id ) {
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
if ( !current_user_can('edit_post', $post_id) ) return;
if ( function_exists( 'wp_cache_clear_cache' ) ) {
wp_cache_clear_cache();
}
}
add_action( 'save_post', 'wptalk_clear_cache_on_post_save' );Обратите внимание, что функция wp_cache_clear_cache() работает, если установлен WP Super Cache. Для других плагинов нужно использовать их API.
Отключение кэширования для определённых пользователей
Иногда нужно исключить из кэширования залогиненных пользователей, чтобы они всегда видели актуальный контент. Для WP Super Cache это можно сделать в настройках, но также можно добавить фильтр:
function wptalk_disable_cache_for_logged_in_users( $cache_enabled ) {
if ( is_user_logged_in() ) {
return false;
}
return $cache_enabled;
}
add_filter( 'supercache_enabled', 'wptalk_disable_cache_for_logged_in_users' );Как избежать конфликтов кэширования с другими плагинами
Кэширование может конфликтовать с плагинами, которые используют AJAX, динамические данные или управление сессиями. Чтобы минимизировать проблемы:
- Добавьте исключения для AJAX-обработчиков в настройках плагина кэширования.
- Используйте правильные хуки для очистки кэша при изменении данных плагинов.
- Проверьте совместимость плагинов и обновляйте их до последних версий.
- Если используете WPRemark или Expert Review от WPSHOP, убедитесь, что их AJAX-запросы не кэшируются.
Мониторинг и тестирование кэширования
Чтобы убедиться, что кэш работает корректно и не мешает сайту:
- Используйте инструменты разработчика в браузере для проверки заголовков кэша (например,
X-CacheилиAge). - Проводите тесты в режиме инкогнито и под разными пользователями.
- Регулярно очищайте кэш после обновлений сайта или плагинов.
- Используйте плагины мониторинга, например, Query Monitor, чтобы отслеживать проблемы с производительностью.