Brotli est un algorithme de compression sans perte developpe par les ingenieurs Google Jyrki Alakuijala et Zoltan Szabadka, libere en open source en septembre 2015 et standardise comme RFC 7932 (juillet 2016). Compare a gzip, Brotli produit des fichiers 15 a 25 pour cent plus petits pour HTML, CSS et JavaScript a cout CPU comparable grace a un dictionnaire statique de 120 KB de tokens web courants. Brotli est supporte par tous les navigateurs modernes depuis 2017 (Chrome 50 avril 2016, Firefox 44 janvier 2016, Safari 11 septembre 2017, Edge 15 avril 2017) et par tous les CDN majeurs (Cloudflare depuis 2017, Fastly, Akamai, CloudFront depuis septembre 2020). L identifiant Content-Encoding est br. Activer Brotli reduit typiquement le poids de la page de 15 a 30 KB sur une page de 200 KB et ameliore LCP de 50 a 150 ms sur les mobiles lents.
Quand utiliser Brotli
- Toujours pour HTML, CSS, JS, JSON, XML, SVG, polices.
- Jamais pour JPEG, PNG, WebP, AVIF, MP4, ZIP, PDF.
- Toujours avec gzip en fallback.
- Quality 11 statique (build), 4 a 6 dynamique.
nginx
Option A : paquet
sudo apt update
sudo apt install libnginx-mod-http-brotli-filter libnginx-mod-http-brotli-staticbrotli_static on;
brotli on;
brotli_comp_level 6;
brotli_min_length 256;
brotli_types text/html text/css application/javascript application/json image/svg+xml font/ttf font/otf application/xml application/ld+json;sudo nginx -t
sudo systemctl reload nginxOption B : compiler ngx_brotli
git clone --recursive https://github.com/google/ngx_brotli.git
./configure --with-compat --add-dynamic-module=./ngx_brotli
make modulesApache
Apache 2.4.26 (juin 2017) embarque mod_brotli :
sudo a2enmod brotli
sudo systemctl restart apache2<IfModule mod_brotli.c>
AddOutputFilterByType BROTLI_COMPRESS text/html text/css application/javascript application/json image/svg+xml font/ttf
BrotliCompressionQuality 5
Header append Vary Accept-Encoding
</IfModule>Hebergeurs WordPress geres
| Hebergeur | Etat |
|---|---|
| Cloudflare | Active par defaut depuis 2017 |
| Kinsta | Par defaut |
| WP Engine | Active sur Global Edge |
| SiteGround | SiteGround Optimizer par defaut |
| Cloudways | Desactive, activer dans Application Settings |
| Bluehost, HostGator | Souvent absent, utiliser Cloudflare |
Verifier
curl -I -H "Accept-Encoding: br" https://example.fr/style.css | grep -i content-encodingPre compression statique
find ./dist -type f \( -name "*.html" -o -name "*.css" -o -name "*.js" \) -exec brotli -q 11 -f {} \;Erreurs frequentes
- Oublier
Vary: Accept-Encoding. - Compresser les images.
- Quality 11 dynamique.
- Brotli sans TLS.
- BREACH (mitige par SameSite et absence de secrets dans le HTML).
Brotli vs gzip vs zstd
| Algo | Annee | Gain HTML |
|---|---|---|
| gzip | 1992 | 70 a 75 pour cent |
| Brotli | 2015 | 75 a 80 pour cent |
| zstd | 2016, Chrome 123 mars 2024, Firefox 126 mai 2024 | Similaire a Brotli, plus rapide |
Comment InspectWP aide ?
InspectWP analyse Content-Encoding de chaque ressource et signale les textes sans Brotli.