Кэширование в WooCommerce
Кэширование в WooCommerce
Заголовок раздела «Кэширование в WooCommerce»Кэширование критически важно для производительности магазина, но WooCommerce генерирует динамический контент (корзина, заказы, профиль). Неправильная настройка кэша приводит к сломанной корзине, рассинхронизации цен и невозможности оформить заказ.
Подробнее об общих принципах кэширования: Кэширование WordPress.
Страницы, которые нельзя кэшировать
Заголовок раздела «Страницы, которые нельзя кэшировать»Три страницы WooCommerce всегда должны оставаться динамическими:
- Cart (Корзина) — показывает товары текущего пользователя
- Checkout (Оформление заказа) — содержит персональные данные и рассчитывает итоги
- My Account (Личный кабинет) — заказы, адреса, профиль
Большинство кэширующих плагинов уже исключают эти страницы автоматически, но стоит проверять.
Сессии WooCommerce
Заголовок раздела «Сессии WooCommerce»Если кэширующая система поддерживает кэширование базы данных, исключите _wc_session_ из кэширования. Иначе корзина и данные пользователя могут не обновляться.
Cookies WooCommerce
Заголовок раздела «Cookies WooCommerce»При настройке кэширования убедитесь, что эти cookies не приводят к отмене кэширования статических страниц:
| Cookie | Срок жизни | Назначение |
|---|---|---|
woocommerce_cart_hash | Сессия | Определяет изменения содержимого корзины |
woocommerce_items_in_cart | Сессия | Определяет изменения содержимого корзины |
wp_woocommerce_session_ | 2 дня | Уникальный код клиента для поиска данных корзины в БД |
woocommerce_recently_viewed | Сессия | Виджет «Недавно просмотренные товары» |
store_notice[notice id] | Сессия | Закрытие уведомления магазина |
Настройка популярных плагинов
Заголовок раздела «Настройка популярных плагинов»W3 Total Cache
Заголовок раздела «W3 Total Cache»В секции Minify добавьте mfunc в поле Ignored comment stems.
WP Rocket
Заголовок раздела «WP Rocket»Полная совместимость с WooCommerce. Убедитесь, что Cart, Checkout, My Account не кэшируются. Рекомендуется отключить минификацию JavaScript — WooCommerce сильно зависит от JS, и агрегация может сломать функциональность.
WP Super Cache
Заголовок раздела «WP Super Cache»Нативная совместимость. WooCommerce автоматически передаёт WP Super Cache список страниц для исключения (Cart, Checkout, My Account).
Настройка Varnish
Заголовок раздела «Настройка Varnish»Минимальная конфигурация для vcl_recv:
if (req.url ~ "^/(cart|my-account|checkout|addons)") { return (pass);}if ( req.url ~ "\\?add-to-cart=" ) { return (pass);}Полная конфигурация Varnish
Заголовок раздела «Полная конфигурация Varnish»Расширенный вариант с обработкой cookies:
# vcl_recv — входящий запрос
# Убираем cookies для статических страницif (!(req.url ~ "(wp-login|wp-admin|cart|my-account/*|wc-api*|checkout|addons|logout|lost-password|product/*)")) { unset req.http.cookie;}
# Пропускаем динамические страницы WooCommerceif (req.url ~ "^/(cart|my-account/*|checkout|wc-api/*|addons|logout|lost-password|product/*)") { return (pass);}
# Пропускаем запросы добавления в корзинуif (req.url ~ "\?add-to-cart=" ) { return (pass);}
# Пропускаем WooCommerce APIif (req.url ~ "\?wc-api=" ) { return (pass);}# vcl_fetch — исходящий ответ
# Убираем cookies для GET-запросов к статическим страницамif ( (!(req.url ~ "(wp-(login|admin)|login|cart|my-account/*|wc-api*|checkout|addons|logout|lost-password|product/*)")) || (req.request == "GET") ) { unset beresp.http.set-cookie;}Типичные проблемы
Заголовок раздела «Типичные проблемы»Сброс пароля зацикливается
Заголовок раздела «Сброс пароля зацикливается»Причина: страница My Account закэширована на уровне сервера.
Решение: обратитесь к хостинг-провайдеру и убедитесь, что My Account исключена из серверного кэширования. Некоторые хостинги кэшируют PHP-страницы на своём уровне.
Корзина не обновляется
Заголовок раздела «Корзина не обновляется»Причина: кэш страницы отдаётся вместо динамического контента.
Решение: проверьте, что:
- Страница Cart исключена из кэширования в плагине
- Cookies WooCommerce не вызывают преждевременную инвалидацию кэша статических страниц
- Если используется Varnish — проверьте правила в
vcl_recv
Материалы и источники
Заголовок раздела «Материалы и источники»- How to configure caching plugins for WooCommerce — официальная документация WooCommerce (источник)
- Кэширование WordPress — общие принципы кэширования
- Оптимизация WordPress — полный обзор оптимизации
- Varnish configuration for WooCommerce — обсуждение на WordPress.org