Compression GZIP et Brotli : Guide complet pour Apache et Nginx — Réduisez la taille de vos fichiers de 70 à 90%
Apprenez à activer la compression GZIP et Brotli sur vos serveurs Apache et Nginx. Tutoriel étape par étape pour tous les niveaux, avec configurations prêtes à l'emploi et outils de vérification.
Pourquoi activer la compression serveur ?
La compression serveur est l'une des optimisations les plus efficaces et les plus simples à mettre en place. Contrairement à la minification qui optimise le code source, la compression réduit la taille des fichiers lors de leur transfert entre le serveur et le navigateur. Combinée à la minification, elle peut réduire la taille totale de vos fichiers de 70 à 90%, améliorant drastiquement les temps de chargement et l'expérience utilisateur.
Impact réel de la compression sur les performances
Voici des données réelles d'un site e-commerce ayant activé la compression GZIP :
Avant optimisation
Après optimisation
Améliorations
La compression améliore directement vos métriques de performance web :
Qu'est-ce que la compression serveur ?
La minification et la compression sont deux techniques complémentaires mais différentes. La minification supprime les espaces, commentaires et optimise le code source. La compression (GZIP ou Brotli) compresse ensuite le fichier déjà minifié pour un gain supplémentaire lors du transfert réseau.
GZIP est la compression la plus répandue et compatible avec tous les navigateurs. Brotli est plus récent et offre une meilleure compression (15-20% de mieux que GZIP), mais nécessite une configuration supplémentaire.
GZIP
Brotli
Configuration GZIP sur Apache
La méthode la plus simple pour activer GZIP sur Apache est d'utiliser le fichier .htaccess. Cette méthode fonctionne même si vous n'avez pas accès à la configuration principale du serveur.
Créer ou modifier le fichier .htaccess
# Activer la compression GZIP
<IfModule mod_deflate.c>
# Compresser HTML, CSS, JavaScript, Text, XML et fonts
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom+xml
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/woff
AddOutputFilterByType DEFLATE font/woff2
# Ne pas compresser les images déjà compressées
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|webp)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
</IfModule>Vérifier que le module mod_deflate est activé
# Pour vérifier, exécutez cette commande sur votre serveur :
apache2ctl -M | grep deflate
# Si le module n'est pas listé, activez-le avec :
sudo a2enmod deflate
sudo systemctl restart apache2Pour une configuration plus globale et performante, configurez GZIP directement dans le fichier de configuration principal d'Apache.
Configuration
# Dans /etc/apache2/apache2.conf ou /etc/httpd/httpd.conf
# Activer le module deflate
LoadModule deflate_module modules/mod_deflate.so
# Configuration de la compression
<IfModule mod_deflate.c>
# Niveau de compression (1-9, 6 est un bon compromis)
DeflateCompressionLevel 6
# Types MIME à compresser
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
AddOutputFilterByType DEFLATE text/javascript application/javascript
AddOutputFilterByType DEFLATE application/json application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE font/ttf font/otf font/woff font/woff2
# Exclure les fichiers déjà compressés
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|webp|ico|gz|zip|bz2|rar)$ no-gzip
# Exclure les fichiers trop petits (moins de 1 KB)
DeflateFilterByType text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>Configuration Brotli sur Apache
Brotli nécessite l'installation d'un module supplémentaire. Voici comment l'installer selon votre système.
Installation sur Ubuntu/Debian
# Installer les dépendances
sudo apt-get update
sudo apt-get install -y libbrotli-dev
# Installer mod_brotli depuis les sources
# Télécharger depuis : https://github.com/kjdev/apache-mod-brotli
# Ou utiliser le PPA si disponibleActivation du module
# Activer le module
sudo a2enmod brotli
sudo systemctl restart apache2Une fois le module installé, configurez Brotli dans votre .htaccess avec priorité sur GZIP.
Configuration
# Configuration Brotli (priorité sur GZIP)
<IfModule mod_brotli.c>
# Niveau de compression (1-11, 6 est recommandé)
BrotliCompressionLevel 6
# Types MIME à compresser
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css
AddOutputFilterByType BROTLI_COMPRESS text/javascript application/javascript
AddOutputFilterByType BROTLI_COMPRESS application/json application/xml
AddOutputFilterByType BROTLI_COMPRESS application/xhtml+xml application/rss+xml
AddOutputFilterByType BROTLI_COMPRESS image/svg+xml
AddOutputFilterByType BROTLI_COMPRESS font/ttf font/otf font/woff font/woff2
# Exclure les fichiers déjà compressés
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|webp|ico|gz|zip|bz2|rar)$ no-brotli
</IfModule>
# Configuration GZIP en fallback
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/json
</IfModule>Configuration GZIP sur Nginx
Nginx inclut le support GZIP par défaut. Il suffit de l'activer dans votre configuration.
Configuration
# Dans /etc/nginx/nginx.conf (configuration globale)
# Ou dans votre fichier de site spécifique
# Activer la compression GZIP
gzip on;
gzip_vary on;
gzip_proxied any;
# Niveau de compression (1-9, 6 est recommandé)
gzip_comp_level 6;
# Types MIME à compresser
gzip_types
text/plain
text/css
text/xml
text/javascript
application/json
application/javascript
application/xml+rss
application/atom+xml
image/svg+xml
font/ttf
font/otf
font/woff
font/woff2;
# Taille minimale des fichiers à compresser (1 KB)
gzip_min_length 1000;
# Ne pas compresser les fichiers déjà compressés
gzip_disable "msie6";Configuration avancée pour maximiser les performances en production.
Configuration
# Configuration optimale GZIP pour Nginx
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types
text/plain
text/css
text/xml
text/javascript
application/json
application/javascript
application/xml+rss
application/atom+xml
image/svg+xml
font/ttf
font/otf
font/woff
font/woff2;
gzip_min_length 1000;
gzip_disable "msie6";
# Cache des fichiers compressés
gzip_static on;Configuration Brotli sur Nginx
Nginx nécessite l'installation du module ngx_brotli. Voici comment procéder.
Installation depuis les sources
# Installer les dépendances
sudo apt-get update
sudo apt-get install -y libbrotli-dev
# Télécharger ngx_brotli
cd /tmp
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init
# Recompiler Nginx avec le module (nécessite les sources de Nginx)
# Consultez la documentation officielle pour les détails completsInstallation via package (si disponible)
# Sur certaines distributions, ngx_brotli est disponible via package
# Vérifiez avec votre gestionnaire de paquetsUne fois le module installé, configurez Brotli avec GZIP en fallback.
Configuration
# Configuration Brotli (priorité sur GZIP)
brotli on;
brotli_comp_level 6;
brotli_types
text/plain
text/css
text/xml
text/javascript
application/json
application/javascript
application/xml+rss
application/atom+xml
image/svg+xml
font/ttf
font/otf
font/woff
font/woff2;
brotli_min_length 1000;
# Configuration GZIP en fallback
gzip on;
gzip_vary on;
gzip_comp_level 6;
gzip_types text/plain text/css text/javascript application/javascript application/json;
gzip_min_length 1000;Vérifier que la compression fonctionne
Le moyen le plus simple de vérifier si la compression GZIP ou Brotli est active sur votre site est d'utiliser un outil en ligne spécialisé.
GiftOfSpeed Gzip/Brotli Test
Outil gratuit et simple pour vérifier la compression GZIP et Brotli de votre site web
https://www.giftofspeed.com/gzip-test/Fonctionnalités :
- •Vérification instantanée de la compression GZIP
- •Détection de la compression Brotli
- •Affichage de la taille originale vs compressée
- •Pourcentage de réduction affiché
- •Test sur plusieurs ressources (HTML, CSS, JS)
Comment utiliser :
Vous pouvez aussi vérifier la compression directement dans les outils de développement de votre navigateur.
Ouvrir les DevTools
Appuyez sur F12 ou Cmd+Option+I (Mac) / Ctrl+Shift+I (Windows/Linux)
Onglet Network
Allez dans l'onglet 'Network' et rechargez la page
Vérifier les en-têtes
Cliquez sur une ressource (HTML, CSS, JS) et regardez l'onglet 'Headers'. Vous devriez voir 'Content-Encoding: gzip' ou 'Content-Encoding: br' (Brotli)
Exemple
# Exemple d'en-tête de réponse avec compression GZIP
HTTP/1.1 200 OK
Content-Type: text/css
Content-Encoding: gzip
Content-Length: 15234
# Exemple d'en-tête de réponse avec compression Brotli
HTTP/1.1 200 OK
Content-Type: text/css
Content-Encoding: br
Content-Length: 12345Bonnes pratiques et recommandations
Compressez les fichiers texte, mais évitez de compresser les fichiers déjà compressés.
À compresser :
Ne pas compresser :
Trouvez le bon équilibre entre taille et consommation CPU.
Ne compressez pas les très petits fichiers, le gain est négligeable.
Combinez compression et mise en cache pour des performances optimales.
Dépannage courant
Si la compression ne semble pas active, vérifiez ces points :
Problèmes courants avec Apache et leurs solutions.
Erreurs et solutions
# Erreur : 'mod_deflate' not found
# Solution : Activez le module
sudo a2enmod deflate
sudo systemctl restart apache2
# Erreur : Syntax error dans .htaccess
# Solution : Vérifiez la syntaxe, chaque ligne doit être correcteProblèmes courants avec Nginx et leurs solutions.
Erreurs et solutions
# Erreur : 'unknown directive "gzip"'
# Solution : Vérifiez que vous n'avez pas de faute de frappe
# gzip doit être écrit exactement ainsi
# Erreur : Configuration test failed
# Solution : Testez avec sudo nginx -t pour voir les erreurs exactesConclusion
Activer la compression GZIP et Brotli sur vos serveurs Apache ou Nginx est une optimisation essentielle qui peut réduire drastiquement la taille de vos fichiers transférés. Combinée à la minification de votre code JavaScript et CSS, la compression peut améliorer significativement les performances de votre site web, réduire vos coûts de bande passante et améliorer votre référencement Google grâce à de meilleurs Core Web Vitals.
Prêt à optimiser vos fichiers ?
Essayer notre outil de minification maintenantArticles connexes
Découvrez comment la minification JavaScript et CSS peut améliorer significativement vos Core Web Vitals (LCP, FID, CLS) et booster votre référencement Google en 2025.

Maîtrisez la minification CSS avec CSSO et PurifyCSS. Techniques avancées, intégration Webpack et optimisation des performances pour des sites ultra-rapides.
Découvrez tout ce qu'il faut savoir sur la minification JavaScript : techniques, outils, bonnes pratiques et impact sur les performances web.