⚡ Configurer un cache Nginx pour WordPress sans plugin (Full Performance)

Si tu gères ton propre serveur et que tu utilises Nginx avec WordPress, tu peux drastiquement booster les performances de ton site sans aucun plugin, simplement grâce à un système de cache statique au niveau du serveur.

👉 Dans ce tuto technique, je t’explique pas à pas comment configurer un FastCGI Cache avec Nginx pour WordPress.


🔥 Pourquoi préférer un cache Nginx natif ?

Contrairement aux plugins comme WP Super Cache ou W3 Total Cache, le cache Nginx est géré directement au niveau du serveur, avant même que WordPress ne soit exécuté. Cela permet :

  • 💨 Une réduction drastique du temps de réponse
  • 🧠 Moins de charge serveur (PHP/MySQL ne sont pas sollicités)
  • 🧩 Moins de dépendance aux plugins
  • ✅ Une meilleure compatibilité avec des outils comme PageSpeed Insights, GTmetrix, etc.

🛠️ Pré-requis

  • Serveur avec Nginx installé (Debian/Ubuntu recommandé)
  • Accès root ou sudo
  • WordPress fonctionnel (FPM-PHP obligatoire)
  • Un fichier de config Nginx par site (vhost)

📁 1. Créer le dossier de cache

sudo mkdir -p /var/cache/nginx/wordpress
sudo chown -R www-data:www-data /var/cache/nginx/wordpress

🧾 2. Configurer le fastcgi_cache dans le vhost

Voici un exemple de configuration à ajouter dans ton fichier /etc/nginx/sites-available/ton-site.conf :

fastcgi_cache_path /var/cache/nginx/wordpress levels=1:2 keys_zone=WORDPRESS:100m inactive=60m use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

Ajoute ensuite ces blocs dans ton server (généralement à l’intérieur du location ~ \.php$) :

set $no_cache 0;

# Ne pas cacher pour les connexions ou commentaires
if ($http_cookie ~* "comment_author|wordpress_logged_in|wp-postpass") {
    set $no_cache 1;
}

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;

    fastcgi_cache_bypass $no_cache;
    fastcgi_no_cache $no_cache;
    fastcgi_cache WORDPRESS;
    fastcgi_cache_valid 200 60m;
    add_header X-FastCGI-Cache $upstream_cache_status;

    # Garde les headers pour que WP fonctionne bien
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

⚠️ Adapte le chemin fastcgi_pass à ta version PHP (vérifie avec php -v).


📤 3. Purger le cache manuellement

Tu peux vider tout le cache avec :

sudo rm -rf /var/cache/nginx/wordpress/*

Automatise-le avec un script Bash ou une tâche Cron si nécessaire.


👤 4. Désactiver le cache pour les utilisateurs connectés

Déjà prévu dans la directive suivante :

if ($http_cookie ~* "wordpress_logged_in") {
    set $no_cache 1;
}

Cela permet d’éviter les bugs d’admin (comme l’édition de pages avec du contenu mis en cache).


🧪 5. Tester si le cache fonctionne

Utilise curl ou inspecte les headers HTTP :

curl -I https://ton-site.fr

Tu dois voir :

X-FastCGI-Cache: HIT

Après une purge ou une première visite, ce sera MISS.


🚀 Résultat : un WordPress ultra-performant

Tu viens de mettre en place un système de cache ultra-léger, rapide et robuste. Résultat :

  • ✅ Moins de 100 ms de temps de réponse TTFB
  • ✅ Score Google PageSpeed amélioré
  • ✅ Charge CPU/RAM réduite sur le serveur

🧠 Astuces bonus

  • Pour vider automatiquement le cache à chaque mise à jour de contenu, tu peux utiliser un hook WordPress côté PHP avec une commande exec() vers le script de purge.
  • Combine cette config avec Redis Object Cache pour booster les requêtes MySQL.
  • Active Brotli ou Gzip dans Nginx pour une meilleure compression des pages.

Commentaires:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *