Saltar a contenido

Purga de Caché de WordPress en cPanel EA4

Invalidación de caché instantánea y automática para WordPress—sin necesidad de limpiar toda tu caché.

🎉 Acceso Gratuito - ¡Tiempo Limitado!

¡Todos los módulos de EA4 son actualmente gratuitos — no se requiere suscripción! Aprende más


  • Invalidación Automática


    La caché se purga automáticamente cuando editas publicaciones, páginas o comentarios—no se necesita intervención manual.

  • Precisión Quirúrgica


    Solo se purga la página cambiada—tu sitio completo permanece en caché y a toda velocidad.

  • Seguro para Múltiples Inquilinos


    La caché de cada usuario de cPanel está aislada—los usuarios no pueden purgar el contenido de otros.

  • Sin Necesidad de Codificación


    Funciona directamente con el plugin de WordPress Proxy Cache Purge.


Configuración en 5 Minutos

Sigue estos pasos para habilitar la purga inteligente de caché en tu servidor cPanel.


Paso 1: Instalar el Módulo de Purga de Caché

# Instalar el repositorio de GetPageSpeed (habilita automáticamente el repositorio ea4 en servidores cPanel)
dnf -y install https://extras.getpagespeed.com/release-latest.rpm

# Instalar el módulo de purga de caché
dnf -y install ea-nginx-cache-purge

Paso 2: Configurar NGINX

Puedes habilitar la purga de caché globalmente para todos los usuarios o por usuario.

Crea /etc/nginx/conf.d/server-includes/cache-purge.conf:

# Habilitar el método PURGE para la purga de caché (todos los usuarios)
proxy_cache_purge PURGE from 127.0.0.1;

Este archivo se incluye automáticamente en todos los bloques de servidor de usuarios de cPanel.

Para el usuario username, crea /etc/nginx/conf.d/users/username/cache-purge.conf:

# Habilitar el método PURGE para la purga de caché
proxy_cache_purge PURGE from 127.0.0.1;

Después de crear la configuración, recarga NGINX:

nginx -t && systemctl reload nginx

Paso 3: Instalar el Plugin Proxy Cache Purge

  1. Ve a Plugins → Añadir Nuevo
  2. Busca "Proxy Cache Purge" (slug: varnish-http-purge)
  3. Haz clic en Instalar Ahora, luego Activar
wp plugin install varnish-http-purge --activate

Paso 4: Configurar Proxy Cache Purge

En el admin de WordPress:

  1. Ve a Ajustes → Proxy Cache Purge
  2. Establece "Establecer IP Personalizada" a: 127.0.0.1
  3. Haz clic en Guardar Ajustes

Configuración Crítica

El plugin debe enviar solicitudes PURGE a 127.0.0.1 (localhost), no a tu IP pública o dominio.


Paso 5: Configurar el Backend de Caché de NGINX

A partir de Proxy Cache Purge 5.9.0, el plugin soporta nativamente el formato de purga con comodín de NGINX. Configúralo para usar el backend de NGINX:

  1. Ve a Proxy Cache Purge → Ajustes
  2. En Backend de Caché, selecciona NGINX
  3. Haz clic en Guardar Ajustes

Añade a tu wp-config.php:

define( 'VHP_PURGE_BACKEND', 'nginx' );

Esto asegura que cuando se purga una página, todas las variantes en caché (gzip, brotli, sin comprimir) se eliminan.

Legado: Versión del Plugin < 5.9.0

Si estás ejecutando Proxy Cache Purge anterior a 5.9.0, crea wp-content/mu-plugins/nginx-cache-purge-fix.php:

<?php
/**
 * Nombre del Plugin: NGINX Cache Purge Fix
 * Descripción: Añade comodín a las URLs de purga para compatibilidad con el encabezado Vary
 */
add_filter("vhp_purgeme_path", function($purgeme, $schema, $host, $path, $pregex, $p) {
    if (empty($pregex)) {
        $purgeme .= "*";
    }
    return $purgeme;
}, 10, 6);

Prueba la Configuración

# 1. Caché de una página (primer request = MISS, segundo = 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. Purga usando el método PURGE con comodín
curl -sX PURGE 'http://127.0.0.1/sample-page/*' -H 'Host: yourdomain.com'
# <h1>Purge exitoso</h1>

# 3. Verifica que la caché se haya limpiado
curl -sI http://127.0.0.1/sample-page/ -H 'Host: yourdomain.com' -H 'Accept-Encoding: gzip' | grep X-Cache
# X-Cache-Status: MISS

Luego prueba a través de WordPress:

  1. Edita cualquier publicación publicada
  2. Haz un cambio y haz clic en Actualizar
  3. El plugin purga automáticamente la caché
  4. Visita la página—debería mostrar contenido fresco

Cómo Funciona

flowchart TD
    subgraph WordPress["<b>WordPress</b>"]
        A[📝 Publicación Actualizada] --> B["🔌 Plugin 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["🗑️ Módulo ngx_cache_purge"]
        E --> F["✓ El comodín coincide con todas las variantes<br/>(gzip, brotli, plano)"]
        F --> G["✓ Elimina del caché en disco"]
        G --> H["✅ Devuelve 'Purge exitoso'"]
    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

Qué Ocurre

  1. Actualizas una publicación en WordPress
  2. El plugin envía una solicitud PURGE a localhost
  3. El módulo de NGINX elimina solo esa URL de la caché
  4. El siguiente visitante obtiene contenido fresco, el resto de la caché permanece intacta

Por Qué Es Rápido

  • Sin limpieza completa de caché — otras páginas permanecen en caché
  • Solo solicitudes locales — sin latencia de red
  • Soporte para comodines — elimina todas las variantes de codificación a la vez

Avanzado: Reducir Variantes de Caché

Optimización Opcional

Recomendado para sitios de alto tráfico para maximizar las tasas de aciertos de caché.

El encabezado Vary: Accept-Encoding hace que NGINX cree entradas de caché separadas para diferentes combinaciones de Accept-Encoding. Los navegadores envían estos en varios órdenes, creando un exceso de caché:

Accept-Encoding Original Problema
gzip, br, deflate Entrada de caché separada
br, gzip Otra entrada separada
gzip, deflate Otra entrada más

La Solución: Normalizar Encabezados

El módulo compression-normalize normaliza los encabezados a valores consistentes:

dnf -y install ea-nginx-compression-normalize

Crea /etc/nginx/conf.d/compression-normalize.conf:

# Normalizar Accept-Encoding para reducir variantes de caché
# Orden de prioridad: preferir brotli, luego gzip
compression_normalize_accept_encoding br,gzip br gzip;

Resultado: Cientos de posibles variantes → solo 3 (br,gzip, br, gzip).


Seguridad

Acceso Solo Localhost

proxy_cache_purge PURGE from 127.0.0.1;

Las solicitudes PURGE externas se procesan como solicitudes normales, no como purgas.

Aislamiento de Usuarios

Cada usuario de cPanel tiene su propia zona de caché. El usuario alice no puede purgar la caché del usuario bob, incluso con las mismas rutas de URL.


Solución de Problemas

La Caché No Se Está Purificando
  1. Verifica la configuración del plugin:
  2. Ve a Ajustes → Proxy Cache Purge
  3. Asegúrate de que IP Personalizada esté configurada a 127.0.0.1

  4. Verifica la configuración del Backend de Caché:

  5. Ve a Proxy Cache Purge → Ajustes y verifica que Backend de Caché esté configurado a NGINX
  6. O verifica que wp-config.php contenga define( 'VHP_PURGE_BACKEND', 'nginx' );

  7. Verifica que la configuración de NGINX esté cargada:

    nginx -T | grep cache_purge
    

412 Precondition Failed

Esto significa que la URL no estaba en caché. No es un error—simplemente no hay nada que purgar.

Módulo No Cargando
# Verifica si está instalado
rpm -q ea-nginx-cache-purge

# Verifica el archivo del módulo
ls -la /etc/nginx/modules/ngx_http_cache_purge_module.so

Relacionado

  • Repositorio cPanel EA4


    Guía completa de configuración para los módulos ea-nginx de cPanel

    Aprende más

  • Módulo de purga de caché


    Referencia completa de directivas y uso avanzado

    Documentación

  • Plugin Proxy Cache Purge


    Página oficial del plugin de WordPress

    WordPress.org