Comment vider le cache de Nginx ?

Publié 27 août 2024

Problème : Accumulation du cache Nginx

Nginx, un serveur web et proxy inverse courant, utilise la mise en cache pour améliorer les performances. Avec le temps, ce cache peut accumuler des données anciennes ou inutiles. Cette accumulation peut ralentir les temps de réponse, augmenter l'utilisation du disque et potentiellement servir du contenu obsolète aux utilisateurs. Vider régulièrement le cache Nginx est important pour maintenir de bonnes performances du serveur et fournir des informations à jour.

Solution : Méthodes pour vider le cache Nginx

Suppression manuelle des fichiers cache du répertoire de cache

Pour vider manuellement le cache Nginx, localisez le répertoire de cache dans votre fichier de configuration Nginx. Utilisez des commandes de terminal pour supprimer les fichiers cache. Par exemple, utilisez "rm -rf /chemin/vers/cache/*" pour supprimer tous les fichiers du dossier cache. Arrêtez Nginx avant de vider le cache pour éviter les problèmes.

Redémarrage du serveur Nginx

Redémarrer le serveur Nginx vide le cache. Sur Linux, utilisez "sudo systemctl restart nginx". Pour macOS, utilisez "sudo nginx -s reload". Sur Windows, redémarrez Nginx via l'application Services. Cette méthode efface tout le contenu mis en cache mais peut causer une interruption du site web.

Utilisation des options de configuration Nginx

Utilisation de la directive proxy_cache_bypass

La directive proxy_cache_bypass permet de contourner le cache pour des requêtes spécifiques. Ajoutez la directive à votre fichier de configuration Nginx. Par exemple, ajoutez "proxy_cache_bypass $http_cache_control;" pour contourner le cache lorsqu'un en-tête spécifique est présent dans la requête.

Implémentation du module Cache Purge

Le module Nginx Cache Purge permet de vider des URL spécifiques du cache. Installez le module, puis configurez-le dans votre fichier de configuration Nginx. Ajoutez un bloc location pour définir comment gérer les requêtes de purge. Cette méthode offre plus de contrôle mais nécessite une configuration supplémentaire.

Techniques avancées pour vider le cache Nginx

Automatisation du vidage du cache avec des scripts shell

Pour automatiser le vidage du cache, créez un script shell. Voici un exemple :

#!/bin/bash
rm -rf /chemin/vers/nginx/cache/*
nginx -s reload

Enregistrez ce script avec une extension .sh et rendez-le exécutable en utilisant la commande chmod.

Pour planifier des tâches de vidage du cache, utilisez le planificateur de tâches cron. Ouvrez le fichier crontab avec :

crontab -e

Ajoutez une ligne pour exécuter votre script à des moments définis. Par exemple, pour vider le cache quotidiennement à minuit :

0 0 * * * /chemin/vers/votre/script.sh

Implémentation des en-têtes Cache-Control

Les en-têtes Cache-Control aident à gérer la façon dont le contenu est mis en cache. Ajoutez ces en-têtes dans votre configuration Nginx :

location / {
    add_header Cache-Control "public, max-age=3600";
}

Cet exemple définit le contenu comme pouvant être mis en cache publiquement pendant une heure.

D'autres directives Cache-Control utiles incluent :

  • no-cache : Nécessite une validation avant d'utiliser le contenu en cache
  • no-store : Empêche la mise en cache d'informations sensibles
  • must-revalidate : Vérifie si le contenu en cache est toujours valide avant utilisation

Ajustez ces en-têtes en fonction de vos besoins de mise en cache.