Кэширование — важный инструмент для ускорения загрузки сайта, но иногда возникает необходимость отключить его на отдельных страницах. Например, если на странице используется динамический контент, который должен обновляться при каждом запросе, стандартное кэширование может создавать проблемы. В этой статье мы разберём, как отключить кэширование в WordPress для определённых страниц, рассмотрим разные способы и приведём практические примеры.
Зачем и когда нужно отключать кэширование на отдельных страницах
Кэширование сохраняет копии страниц или данных, чтобы уменьшить нагрузку на сервер и ускорить загрузку для пользователей. Однако бывают ситуации, когда кэширование нежелательно:
- Страницы с формами, которые показывают разные результаты в зависимости от действий пользователя.
- Динамический контент, например, результаты опросов, блоки с последними комментариями или персонализированная информация.
- Страницы с частой сменой данных, где кэширование может показывать устаревший контент.
В таких случаях отключение кэширования позволяет обеспечить актуальность данных и корректную работу функционала.
Способы отключения кэширования в WordPress для отдельных страниц
Отключение кэширования через заголовки HTTP
Самый универсальный способ — отправить заголовки, запрещающие кэширование. Это можно сделать в файле functions.php темы или в плагине.
function wppuzzle_disable_cache_for_page() {
if (is_page('slug-stranicy-ili-ID')) {
nocache_headers();
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Expires: 0');
}
}
add_action('send_headers', 'wppuzzle_disable_cache_for_page');В этом коде замените slug-stranicy-ili-ID на нужный слаг или ID страницы. Функция nocache_headers() и последующие заголовки запрещают браузеру и прокси сохранять копии страницы.
Отключение кэширования в популярных плагинах кеширования
Если на сайте установлен плагин кэширования (например, WP Super Cache, W3 Total Cache, LiteSpeed Cache), то в них есть настройки для исключения страниц из кэша.
- WP Super Cache: В настройках есть раздел "Advanced" — там можно добавить URL или слаги страниц в поле "Rejected URLs".
- W3 Total Cache: В разделе Page Cache есть поле "Never cache the following pages" — туда добавьте URI страниц.
- LiteSpeed Cache: В настройках "Exclude" можно указать страницы, которые не должны кэшироваться.
Это наиболее простой способ управлять кэшированием без кода.
Отключение кэширования для REST API и AJAX запросов
Если на странице активно используются AJAX запросы или REST API, то их следует исключить из кэширования отдельно, иначе обновления не будут отображаться.
function wppuzzle_disable_cache_for_ajax() {
if (defined('DOING_AJAX') && DOING_AJAX) {
nocache_headers();
}
}
add_action('send_headers', 'wppuzzle_disable_cache_for_ajax');Это гарантирует, что AJAX ответы не будут кэшироваться.
Пример отключения кэширования для страницы с формой обратной связи
Допустим, у вас на странице с слагом contact расположена форма обратной связи, и вы хотите, чтобы она всегда загружалась без кэша.
function wppuzzle_disable_cache_for_contact() {
if (is_page('contact')) {
nocache_headers();
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Expires: 0');
}
}
add_action('send_headers', 'wppuzzle_disable_cache_for_contact');Этот код добавьте в файл functions.php вашей темы или в кастомный плагин. Теперь страница /contact/ не будет кэшироваться браузером и сервером.
Рекомендации по работе с кэшированием и плагинами WPShop
Если вы используете плагины из набора WPShop, например, My Popup для вывода динамичных всплывающих окон, убедитесь, что страницы с этими окнами исключены из кэша. Для этого используйте предложенные выше методы или настройте исключения в плагине кэширования.
Также плагин WPRemark, который отвечает за отзывы, может требовать отключения кэширования на страницах с отзывами для корректного отображения новых сообщений.
Как проверить, что кэширование отключено
После внесения изменений проверьте заголовки ответа страницы через инструменты разработчика браузера (вкладка Network). Заголовки должны содержать Cache-Control: no-store, no-cache и Pragma: no-cache.
Также можно проверить работу плагинов кэширования — попробуйте обновить страницу несколько раз и убедитесь, что контент обновляется корректно.
Итог
Отключение кэширования для отдельных страниц — важный навык для разработчика WordPress, особенно при работе с динамическим контентом. Используйте заголовки HTTP для универсального контроля, а также настраивайте исключения в плагинах кэширования. Это позволит избежать проблем с устаревшими данными и улучшить пользовательский опыт.