Перейти к содержанию

Очистка кэша WordPress на cPanel EA4

Мгновенная, автоматическая недействительность кэша для WordPress — без очистки всего кэша.

🎉 Бесплатный доступ - ограниченное время!

Все модули EA4 в настоящее время бесплатны — подписка не требуется! Узнать больше


  • Автоматическая недействительность


    Кэш очищается автоматически при редактировании постов, страниц или комментариев — без необходимости ручного вмешательства

  • Хирургическая точность


    Очищается только измененная страница — весь ваш сайт остается закэшированным и молниеносно быстрым

  • Безопасность для нескольких арендаторов


    Кэш каждого пользователя cPanel изолирован — пользователи не могут очищать контент друг друга

  • Не требуется кодирования


    Работает из коробки с плагином Proxy Cache Purge для WordPress


Настройка за 5 минут

Следуйте этим шагам, чтобы включить интеллектуальную очистку кэша на вашем сервере cPanel.


Шаг 1: Установите модуль очистки кэша

# Установите репозиторий GetPageSpeed (авто-включает репозиторий ea4 на серверах cPanel)
dnf -y install https://extras.getpagespeed.com/release-latest.rpm

# Установите модуль очистки кэша
dnf -y install ea-nginx-cache-purge

Шаг 2: Настройте NGINX

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

Создайте /etc/nginx/conf.d/server-includes/cache-purge.conf:

# Включите метод PURGE для очистки кэша (все пользователи)
proxy_cache_purge PURGE from 127.0.0.1;

Этот файл автоматически включается во все серверные блоки пользователей cPanel.

Для пользователя username создайте /etc/nginx/conf.d/users/username/cache-purge.conf:

# Включите метод PURGE для очистки кэша
proxy_cache_purge PURGE from 127.0.0.1;

После создания конфигурации перезагрузите NGINX:

nginx -t && systemctl reload nginx

Шаг 3: Установите плагин Proxy Cache Purge

  1. Перейдите в Плагины → Добавить новый
  2. Найдите "Proxy Cache Purge" (slug: varnish-http-purge)
  3. Нажмите Установить сейчас, затем Активировать
wp plugin install varnish-http-purge --activate

Шаг 4: Настройте Proxy Cache Purge

В админке WordPress:

  1. Перейдите в Настройки → Proxy Cache Purge
  2. Установите "Установить пользовательский IP" на: 127.0.0.1
  3. Нажмите Сохранить настройки

Критическая настройка

Плагин должен отправлять запросы PURGE на 127.0.0.1 (localhost), а не на ваш публичный IP или домен.


Шаг 5: Настройте кэш-бэкенд NGINX

Начиная с Proxy Cache Purge 5.9.0, плагин нативно поддерживает формат wildcard purge NGINX. Настройте его для использования бэкенда NGINX:

  1. Перейдите в Proxy Cache Purge → Настройки
  2. В разделе Кэш-бэкенд выберите NGINX
  3. Нажмите Сохранить настройки

Добавьте в ваш wp-config.php:

define( 'VHP_PURGE_BACKEND', 'nginx' );

Это гарантирует, что когда страница очищается, все закэшированные варианты (gzip, brotli, не сжатые) будут очищены.

Устаревшее: версия плагина < 5.9.0

Если вы используете Proxy Cache Purge версии ниже 5.9.0, создайте wp-content/mu-plugins/nginx-cache-purge-fix.php:

<?php
/**
 * Название плагина: Исправление очистки кэша NGINX
 * Описание: Добавляет wildcard к URL для совместимости с заголовком Vary
 */
add_filter("vhp_purgeme_path", function($purgeme, $schema, $host, $path, $pregex, $p) {
    if (empty($pregex)) {
        $purgeme .= "*";
    }
    return $purgeme;
}, 10, 6);

Проверьте настройку

# 1. Закэшируйте страницу (первый запрос = MISS, второй = HIT)
curl -sI http://127.0.0.1/sample-page/ -H 'Host: yourdomain.com' -H 'Accept-Encoding: gzip' | grep X-Cache
# X-Cache-Status: MISS
curl -sI http://127.0.0.1/sample-page/ -H 'Host: yourdomain.com' -H 'Accept-Encoding: gzip' | grep X-Cache
# X-Cache-Status: HIT

# 2. Очистите с помощью метода PURGE с wildcard
curl -sX PURGE 'http://127.0.0.1/sample-page/*' -H 'Host: yourdomain.com'
# <h1>Успешная очистка</h1>

# 3. Проверьте, что кэш очищен
curl -sI http://127.0.0.1/sample-page/ -H 'Host: yourdomain.com' -H 'Accept-Encoding: gzip' | grep X-Cache
# X-Cache-Status: MISS

Затем протестируйте через WordPress:

  1. Отредактируйте любой опубликованный пост
  2. Внесите изменения и нажмите Обновить
  3. Плагин автоматически очищает кэш
  4. Перейдите на страницу — она должна показать свежий контент

Как это работает

flowchart TD
    subgraph WordPress["<b>WordPress</b>"]
        A[📝 Пост обновлен] --> B["🔌 Плагин Proxy Cache Purge"]
        B --> C["PURGE http://127.0.0.1/post-slug/*<br/>Host: yourdomain.com"]
    end

    C --> D

    subgraph NGINX["<b>NGINX (ea-nginx)</b>"]
        D["🔒 proxy_cache_purge PURGE from 127.0.0.1"] --> E["🗑️ Модуль ngx_cache_purge"]
        E --> F["✓ Wildcard соответствует всем вариантам<br/>(gzip, brotli, plain)"]
        F --> G["✓ Удаляет из дискового кэша"]
        G --> H["✅ Возвращает 'Успешная очистка'"]
    end

    style WordPress fill:#4a90d9,stroke:#2d5986,color:#fff
    style NGINX fill:#009639,stroke:#006325,color:#fff
    style A fill:#5ba0e0
    style B fill:#5ba0e0
    style C fill:#5ba0e0
    style D fill:#00a844
    style E fill:#00a844
    style F fill:#00a844
    style G fill:#00a844
    style H fill:#00a844

Что происходит

  1. Вы обновляете пост в WordPress
  2. Плагин отправляет запрос PURGE на localhost
  3. Модуль NGINX удаляет только этот URL из кэша
  4. Следующий посетитель получает свежий контент, остальной кэш остается нетронутым

Почему это быстро

  • Нет полной очистки кэша — другие страницы остаются закэшированными
  • Только локальные запросы — без сетевой задержки
  • Поддержка wildcard — очищает все варианты кодирования сразу

Расширенные возможности: Сокращение вариантов кэша

Дополнительная оптимизация

Рекомендуется для сайтов с высоким трафиком, чтобы максимизировать коэффициенты попадания в кэш.

Заголовок Vary: Accept-Encoding заставляет NGINX создавать отдельные записи кэша для различных комбинаций Accept-Encoding. Браузеры отправляют их в различных порядках, создавая избыток кэша:

Исходный Accept-Encoding Проблема
gzip, br, deflate Отдельная запись кэша
br, gzip Еще одна отдельная запись
gzip, deflate Еще одна запись

Решение: Нормализация заголовков

Модуль compression-normalize нормализует заголовки до согласованных значений:

dnf -y install ea-nginx-compression-normalize

Создайте /etc/nginx/conf.d/compression-normalize.conf:

# Нормализуйте Accept-Encoding для уменьшения вариантов кэша
# Приоритетный порядок: предпочтение brotli, затем gzip
compression_normalize_accept_encoding br,gzip br gzip;

Результат: Сотни возможных вариантов → всего 3 (br,gzip, br, gzip).


Безопасность

Доступ только с localhost

proxy_cache_purge PURGE from 127.0.0.1;

Внешние запросы PURGE обрабатываются как обычные запросы, а не как очистки.

Изоляция пользователей

У каждого пользователя cPanel есть своя зона кэша. Пользователь alice не может очистить кэш пользователя bob — даже с одинаковыми URL путями.


Устранение неполадок

Кэш не очищается
  1. Проверьте настройку плагина:
  2. Перейдите в Настройки → Proxy Cache Purge
  3. Убедитесь, что Пользовательский IP установлен на 127.0.0.1

  4. Проверьте настройку кэш-бэкенда:

  5. Перейдите в Proxy Cache Purge → Настройки и убедитесь, что Кэш-бэкенд установлен на NGINX
  6. Или проверьте, что wp-config.php содержит define( 'VHP_PURGE_BACKEND', 'nginx' );

  7. Проверьте, что конфигурация NGINX загружена:

    nginx -T | grep cache_purge
    

412 Precondition Failed

Это означает, что URL не был в кэше. Это не ошибка — просто нечего очищать.

Модуль не загружается
# Проверьте, установлен ли
rpm -q ea-nginx-cache-purge

# Проверьте файл модуля
ls -la /etc/nginx/modules/ngx_http_cache_purge_module.so

Связанные

  • Репозиторий cPanel EA4


    Полное руководство по настройке модулей ea-nginx для cPanel

    Узнать больше

  • Модуль cache-purge


    Полная справка по директивам и продвинутому использованию

    Документация

  • Плагин Proxy Cache Purge


    Официальная страница плагина WordPress

    WordPress.org