wpmake.ru wordpress WPMake

Как отключить кэширование в WordPress для разработки и отладки

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

Почему важно отключать кэширование при разработке

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

  • Изменения в CSS или JS не отображаются;
  • Обновлённый PHP-код или шаблоны не применяются;
  • REST API возвращает устаревшие данные;
  • Кэшированные страницы мешают тестировать динамические функции.

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

Отключение кэширования браузера

Браузер кэширует файлы CSS, JS, изображения и HTML-страницы, чтобы ускорить загрузку сайта. Для разработки нужно временно отключить это кэширование или заставить браузер получать свежие версии файлов.

Использование заголовков HTTP для отключения кэша

В файл functions.php вашей темы или в отдельный плагин можно добавить следующий код, который отправляет заголовки, запрещающие кэширование браузером:

function wpmake_disable_browser_cache() {
    header('Cache-Control: no-cache, no-store, must-revalidate, max-age=0');
    header('Pragma: no-cache');
    header('Expires: 0');
}
add_action('send_headers', 'wpmake_disable_browser_cache');

Этот код гарантирует, что браузер будет запрашивать свежие версии страниц и ресурсов при каждом обновлении.

Использование параметров в URL для CSS и JS

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

function wpmake_enqueue_scripts_no_cache() {
    wp_enqueue_style('theme-style', get_stylesheet_uri(), array(), time());
    wp_enqueue_script('theme-script', get_template_directory_uri() . '/js/script.js', array('jquery'), time(), true);
}
add_action('wp_enqueue_scripts', 'wpmake_enqueue_scripts_no_cache');

Здесь time() добавляет текущее время как версию, что заставляет браузер загружать файл заново при каждой загрузке страницы.

Отключение кэширования на уровне плагинов

Многие сайты используют плагины для кэширования, такие как Clearfy Pro, W3 Total Cache, WP Super Cache и другие. Для разработки их нужно временно отключать или настраивать в режим без кэширования.

Отключение популярных плагинов кэширования

  • WP Super Cache: В админке перейдите в Настройки > WP Super Cache и нажмите «Отключить кеширование».
  • W3 Total Cache: В разделе Performance отключите все виды кэширования, или в режиме разработки включите «Development Mode».
  • Clearfy Pro: В настройках плагина временно отключите опции кэширования и оптимизации.

Если админка недоступна, можно временно переименовать папку плагина через FTP или отключить его программно:

function wpmake_disable_cache_plugin() {
    deactivate_plugins('wp-super-cache/wp-cache.php');
}
add_action('init', 'wpmake_disable_cache_plugin');

Отключение объектного и transient кэширования в WordPress

WordPress использует объектный кэш и transient API для временного хранения данных. Их тоже можно отключить для разработки.

Отключение объектного кэша

Если у вас настроен persistent object cache (например, Redis или Memcached), временно отключите его, удалив или переименовав файл object-cache.php в папке wp-content. Это остановит кэширование объектов.

Отключение transient кэшей программно

Для отключения transient кэшей можно перезаписать функции, чтобы они сразу возвращали false или удаляли записи:

function wpmake_disable_transients() {
    remove_action('shutdown', 'wp_cache_flush');
    add_filter('pre_set_site_transient', '__return_false');
    add_filter('pre_set_transient', '__return_false');
    add_filter('pre_get_site_transient', '__return_false');
    add_filter('pre_get_transient', '__return_false');
}
add_action('init', 'wpmake_disable_transients');

Работа с WP-Cron и кешированием при разработке

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

define('DISABLE_WP_CRON', true);
// Запуск cron вручную
wp_schedule_single_event(time() + 10, 'wpmake_custom_cron_hook');

Это помогает тестировать задачи без задержек и кэширования.

Полезные плагины для управления кэшированием

Для удобства отключения и очистки кэша можно использовать плагины:

  • Clearfy Pro — предлагает удобный интерфейс для управления кэшированием и оптимизациями, а также режим разработки. Подробнее на WpShop.ru
  • Query Monitor — помогает отследить, какие запросы к базе данных кэшируются и как ведёт себя кэширование на сайте.
  • WP Rocket — имеет режим разработки, отключающий кеш и минификацию.

Итоговые рекомендации по отключению кэширования

Для корректной разработки лучше комбинировать сразу несколько методов:

  1. Отключить кэш браузера с помощью заголовков и версионных параметров.
  2. Временно отключить или перевести в режим разработки плагины кэширования.
  3. Отключить persistent object cache (Redis, Memcached).
  4. Отключить transient кэши через фильтры.
  5. Контролировать WP-Cron.

Используйте инструменты типа Clearfy Pro для удобного управления, чтобы быстро переключаться между режимами разработки и продакшена.

Таким образом, вы обеспечите максимально актуальное отображение изменений и упростите процесс разработки и отладки сайта на WordPress.

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙