Mise en cache et compression des fichiers statiques dans Nginx

Comment accélérer votre site web et réduire la charge du serveur.

Une configuration correcte du cache et de la compression pour les fichiers statiques (images, CSS, JavaScript, polices, etc.) est l'un des moyens les plus efficaces d'améliorer la vitesse de chargement d'un site, de réduire la bande passante consommée et d'alléger la charge globale sur votre serveur.

Dans ce guide, nous abordons deux fonctionnalités essentielles de Nginx :

  • La directive expires pour contrôler le cache navigateur
  • La compression GZIP pour les fichiers texte

1. Configurer le cache navigateur avec expires

La directive expires indique au navigateur combien de temps il peut conserver un fichier dans son cache local avant de solliciter à nouveau le serveur.

Ouvrez le fichier de configuration Nginx de votre site (généralement /etc/nginx/conf.d/vhost.conf ou similaire) et ajoutez le bloc location suivant pour les fichiers statiques :

location ~* \.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot|mp4|webm|ogg|mp3|pdf|zip)$ {
    expires 30d;                    # Cache pendant 30 jours
    add_header Cache-Control "public";
    access_log off;                 # Désactiver les logs pour les fichiers statiques (économie de ressources)
}

Valeurs expires recommandées :

  • Images, polices et icônes : 30d ou 1y
  • CSS et JavaScript : 7d30d (utiliser des durées plus courtes pour les fichiers fréquemment mis à jour)
  • Fichiers rarement modifiés : 1y

2. Activer la compression GZIP

La compression GZIP peut réduire considérablement la taille des fichiers texte (HTML, CSS, JS, SVG, etc.), ce qui accélère le chargement des pages. Ajoutez la configuration suivante dans votre bloc server {} :

server {
    ...

    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;               # Niveau de compression (1–9)
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_min_length 256;
    gzip_types
        text/plain
        text/css
        text/xml
        text/javascript
        application/javascript
        application/json
        application/xml
        application/rss+xml
        image/svg+xml;
}

Nos produits et services

Hébergement webFonctionne sur des disques NVMe ultra-rapides. Convient aux sites de toute complexité.
Commande
VPSInfrastructure cloud flexible avec accès root complet.
Commande
Serveurs dédiésServeurs physiques pour une performance maximale.
Commande

3. Appliquer les paramètres à tous les sites (modèle)

Pour appliquer automatiquement ces optimisations à tous les hôtes virtuels, créez un fichier modèle :

sudo nano /usr/local/ispmgr/etc/server.templ

Ajoutez-y le contenu suivant :

location ~* \.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot)$ {
    expires 30d;
    add_header Cache-Control "public";
    access_log off;
}

Après l'enregistrement, redémarrez Nginx :

sudo systemctl restart nginx

Conseils utiles

  • Testez toujours votre configuration après toute modification : sudo nginx -t
  • Combinez expires avec l'en-tête Cache-Control: public pour des performances optimales.
  • Évitez de définir des durées de cache très longues (par exemple, plus d'un an) sur des fichiers fréquemment mis à jour tels que CSS ou JavaScript — les utilisateurs risqueraient d'afficher des versions obsolètes pendant une longue période.
  • Sur un VPS ou un serveur dédié, vous pouvez aller encore plus loin en utilisant le cache FastCGI, proxy_cache ou des règles avancées de cache navigateur.

Aide

Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !

Besoin d’aide?Nos ingénieurs vous aideront gratuitement pour n’importe quelle question en quelques minutesNous contacter