La question revient à chaque audit d’hébergement : faut-il activer Brotli, ou Gzip suffit-il encore ? Les deux algorithmes compressent les réponses HTTP avant transfert, réduisant le poids des fichiers texte (HTML, CSS, JavaScript, JSON) de manière souvent spectaculaire. Brotli, développé par Google, promet un meilleur taux de compression, mais au prix d’un coût CPU différent. Nous avons mesuré les deux sur un site WordPress de taille moyenne pour sortir du débat théorique.
Le protocole de test
Le site testé sert environ 40 000 pages vues mensuelles, avec un thème enfant classique et une dizaine d’extensions actives. Nous avons comparé, sur les mêmes fichiers statiques (CSS, JS, HTML généré), trois configurations : Gzip niveau 6 (réglage par défaut le plus courant), Brotli niveau 5, et Brotli niveau 11 (compression maximale, utilisée uniquement pour la compression statique précalculée).
Résultats de taux de compression
| Configuration | Taille moyenne CSS/JS | Réduction vs non compressé |
|---|---|---|
| Sans compression | 312 Ko | — |
| Gzip niveau 6 | 84 Ko | 73 % |
| Brotli niveau 5 | 76 Ko | 76 % |
| Brotli niveau 11 (statique) | 68 Ko | 78 % |
L’écart entre Gzip niveau 6 et Brotli niveau 5, comparables en coût CPU, reste modeste mais net : environ 10 % de fichiers en moins à transférer. L’écart devient plus marqué avec Brotli niveau 11, mais ce niveau est bien trop coûteux pour être calculé à la volée sur chaque requête.

Le coût CPU, la vraie différence
C’est sur ce point que le choix se joue réellement. Compresser à la volée à un niveau élevé consomme du CPU à chaque requête, ce qui peut devenir un problème sur un hébergement mutualisé ou sous forte charge. La bonne pratique, pour les fichiers statiques qui changent rarement (CSS et JS compilés), consiste à précompresser une fois pour toutes en Brotli niveau 11, puis à servir ce fichier précompressé sans recalcul à chaque requête.
Configuration nginx recommandée
http {
gzip on;
gzip_comp_level 6;
gzip_types text/plain text/css application/javascript application/json;
brotli on;
brotli_comp_level 5;
brotli_types text/plain text/css application/javascript application/json;
brotli_static on; # sert les .br précompressés si présents
}
Le module brotli_static vérifie d’abord si un fichier .br existe à côté du fichier original avant de compresser à la volée. C’est la combinaison la plus efficace : compression maximale pour les assets statiques versionnés, compression légère à la volée pour le HTML généré dynamiquement par WordPress.
Précompresser les assets du thème
find ./dist -type f \( -name "*.css" -o -name "*.js" \) -exec brotli -q 11 -k {} \;
Cette commande génère un fichier .br à côté de chaque fichier CSS et JS du dossier de build, à intégrer dans le pipeline de déploiement du thème plutôt qu’à lancer manuellement.
Ce qu’il ne faut pas oublier côté navigateur
Tous les navigateurs récents annoncent leur support de Brotli via l’en-tête Accept-Encoding, mais uniquement sur les connexions HTTPS : Brotli n’est jamais négocié en clair sur du HTTP simple, contrairement à Gzip. Un site encore accessible en HTTP sur certaines URL internes ne bénéficiera donc pas de la compression Brotli sur ces requêtes précises, un détail qui explique parfois des résultats incohérents lors d’un audit rapide.
Vérifiez systématiquement l’en-tête de réponse pour confirmer l’algorithme réellement utilisé, plutôt que de vous fier à la seule configuration déclarée côté serveur :
curl -sI -H "Accept-Encoding: br, gzip" https://exemple-client.test/style.css | grep -i content-encoding
Checklist avant de généraliser Brotli
- Confirmer que le module Brotli est bien compilé et actif sur nginx, il ne fait pas partie du cœur par défaut sur toutes les distributions.
- Précompresser les assets versionnés du thème dans le pipeline de build, jamais à la main au coup par coup.
- Garder Gzip actif en repli pour les clients qui ne négocient pas Brotli, plutôt que de désactiver totalement Gzip.
- Recontrôler le taux de compression après chaque montée de version majeure du thème, un nouveau bundle CSS peut se comporter différemment.
Verdict
Sur ce projet, Brotli l’emporte, mais pas de façon aussi spectaculaire que certains comparatifs le laissent entendre pour un usage à la volée seul. Le vrai gain se trouve dans la combinaison précompression statique en Brotli niveau 11 pour les assets versionnés, et Gzip ou Brotli léger à la volée pour le contenu généré dynamiquement par WordPress. Activer Brotli sans repenser la stratégie de compression statique n’apporte qu’un gain marginal par rapport à un Gzip bien réglé.
La compression n’est jamais un interrupteur unique : c’est une stratégie qui distingue ce qui change souvent de ce qui ne change jamais.