Aller au contenu

Purge de Cache WordPress sur VPS

Invalidation de cache instantanée et automatique pour WordPress sur tout VPS ou serveur dédié basé sur RHEL.


  • Invalidation Automatique


    Le cache est purgé automatiquement lorsque vous modifiez des articles, des pages ou des commentaires.

  • Précision Chirurgicale


    Seule la page modifiée est purgée—votre site entier reste mis en cache et rapide.

  • Configuration en 5 Minutes


    Configuration simple avec nos modules NGINX préconstruits.

  • Mise en Cache Basée sur le Disque


    Le cache survit aux redémarrages NGINX—pas de cache froid après les mises à jour.


Prérequis

  • Un VPS ou serveur dédié exécutant RHEL 7/8/9, Rocky Linux, AlmaLinux, ou Amazon Linux
  • NGINX installé (depuis le dépôt GetPageSpeed recommandé)
  • Site WordPress avec mise en cache de page complète configurée

Configuration Rapide

Étape 1 : Installer le Module de Purge de Cache

# Installer le dépôt GetPageSpeed
dnf -y install https://extras.getpagespeed.com/release-latest.rpm

# Installer le module de purge de cache
dnf -y install nginx-module-cache-purge

Activez le module dans /etc/nginx/nginx.conf :

load_module modules/ngx_http_cache_purge_module.so;

Étape 2 : Configurer le Cache Proxy NGINX

Si vous n'avez pas encore configuré la mise en cache proxy, voici une configuration complète :

Éditez /etc/nginx/nginx.conf ou créez /etc/nginx/conf.d/proxy-cache.conf :

# Définir la zone de cache (dans le bloc http)
proxy_cache_path /var/cache/nginx/wordpress
                 levels=1:2
                 keys_zone=wordpress:100m
                 max_size=10g
                 inactive=60m
                 use_temp_path=off;

Dans votre bloc serveur :

server {
    listen 80;
    server_name example.com;

    # Activer la mise en cache
    proxy_cache wordpress;
    proxy_cache_valid 200 60m;
    proxy_cache_valid 404 1m;
    proxy_cache_key "$scheme$request_method$host$request_uri";

    # Ajouter l'en-tête de statut de cache
    add_header X-Cache-Status $upstream_cache_status;

    # Activer la méthode PURGE (localhost uniquement)
    proxy_cache_purge PURGE from 127.0.0.1;

    location / {
        proxy_pass http://127.0.0.1:8080;  # Votre backend
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Créez le répertoire de cache :

mkdir -p /var/cache/nginx/wordpress
chown nginx:nginx /var/cache/nginx/wordpress
nginx -t && systemctl reload nginx

Étape 3 : Installer le Plugin Proxy Cache Purge

  1. Allez dans Plugins → Ajouter Nouveau
  2. Recherchez "Proxy Cache Purge" (slug : varnish-http-purge)
  3. Cliquez sur Installer Maintenant, puis Activer
wp plugin install varnish-http-purge --activate

Étape 4 : Configurer Proxy Cache Purge

Dans l'administration WordPress :

  1. Allez dans Réglages → Proxy Cache Purge
  2. Réglez "Définir l'IP Personnalisée" sur : 127.0.0.1
  3. Cliquez sur Enregistrer les Paramètres

Paramètre Critique

Le plugin doit envoyer des requêtes PURGE à 127.0.0.1 (localhost), pas à votre IP publique.


Étape 5 : Configurer le Backend de Cache NGINX

À partir de Proxy Cache Purge 5.9.0, le plugin prend en charge nativement le format de purge wildcard de NGINX. Configurez-le pour utiliser le backend NGINX :

  1. Allez dans Proxy Cache Purge → Paramètres
  2. Sous Cache Backend, sélectionnez NGINX
  3. Cliquez sur Enregistrer les Paramètres

Ajoutez à votre wp-config.php :

define( 'VHP_PURGE_BACKEND', 'nginx' );
Héritage : Version du Plugin < 5.9.0

Si vous exécutez Proxy Cache Purge version inférieure à 5.9.0, créez wp-content/mu-plugins/nginx-cache-purge-fix.php :

<?php
/**
 * Nom du Plugin : NGINX Cache Purge Fix
 * Description : Ajoute un wildcard aux URLs de purge pour la compatibilité avec l'en-tête Vary
 */
add_filter("vhp_purgeme_path", function($purgeme, $schema, $host, $path, $pregex, $p) {
    if (empty($pregex)) {
        $purgeme .= "*";
    }
    return $purgeme;
}, 10, 6);

Tester la Configuration

# 1. Mettre en cache une page
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: MISS (première requête)
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: HIT (mis en cache !)

# 2. Purger la page
curl -sX PURGE 'http://127.0.0.1/sample-page/*' -H 'Host: example.com'
# <h1>Purge réussie</h1>

# 3. Vérifier que le cache est vidé
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: MISS (vidé !)

Comment Ça Marche

flowchart LR
    subgraph WP["WordPress"]
        A["📝 Article Mis à Jour"] --> B["🔌 Plugin"]
    end

    B -->|"PURGE /post/*"| C

    subgraph NG["NGINX"]
        C["🗑️ cache_purge"] --> D["✅ Page supprimée"]
    end

    E["👤 Visiteur"] -->|"GET /post/"| NG
    D --> F["Contenu frais servi"]

    style WP fill:#4a90d9,stroke:#2d5986,color:#fff
    style NG fill:#009639,stroke:#006325,color:#fff

Conseils de Performance

  • Utiliser un Disque RAM pour le Cache Chaud


    Montez /var/cache/nginx en tant que tmpfs pour des lectures de cache aussi rapides que possible.

    mount -t tmpfs -o size=2G tmpfs /var/cache/nginx
    
  • Normaliser les En-têtes de Compression


    Réduisez les variantes de cache avec le module compression-normalize.

  • Contourner le Cache pour les Utilisateurs Connectés


    proxy_cache_bypass $cookie_wordpress_logged_in;
    

Considérations de Sécurité

La restriction from 127.0.0.1 est critique :

proxy_cache_purge PURGE from 127.0.0.1;

Sans cela, n'importe qui pourrait purger votre cache en envoyant des requêtes PURGE.

Pour une sécurité supplémentaire, vous pouvez également :

# Autoriser uniquement PURGE depuis des IP spécifiques
proxy_cache_purge PURGE from 127.0.0.1 10.0.0.0/8;

# Ou exiger une authentification
# (non couvert dans ce guide)

Dépannage

X-Cache-Status affiche toujours MISS
  • Vérifiez que la directive proxy_cache est activée
  • Vérifiez que le répertoire de cache existe et est accessible en écriture par nginx
  • Vérifiez que les règles proxy_cache_bypass ne se déclenchent pas toujours
PURGE retourne 404
  • Assurez-vous que la directive proxy_cache_purge est dans le bon bloc de localisation
  • Vérifiez que le module est chargé : nginx -V 2>&1 | grep cache_purge
Le répertoire de cache se remplit
  • Ajustez max_size dans proxy_cache_path
  • Réduisez le délai d'inactivité
  • Exécutez nginx -s reload pour déclencher le nettoyage du gestionnaire de cache

Liens Associés

  • Module cache-purge


    Référence complète des directives

    Documentation

  • Module compression-normalize


    Réduisez les variantes de cache

    Documentation

  • Guide de Cache FastCGI


    Méthode de mise en cache alternative pour PHP-FPM

    FastCGI Cache