La compression Brotli est plus performante que la compression Gzip [étude]

Mathieu Chartier Développement 1 commentaire

La compression Gzip est bien connue des développeurs ou des architectes serveurs sur Internet, mais qu'en est-il de la compression Brotli créée par Google ? Addy Osmani, ingénieur pour Google Chrome, affirme que Brotli apporte une compression plus efficace dans tous les domaines que Gzip, avec une étude à l'appui. Selon les tests, la compression Brotli pourrait économiser 25% d'octets supplémentaires au total, avec au moins 15% de gain pour les ressources Javascript et 20% pour les ressources CSS. Intéressant...

Brotli est un algorithme de compression libre comparable à Deflate utilisé sur les serveurs Apache notamment avec le mod_deflate (Brotli existe déjà depuis quelques années, mais sa compatibilité progresse). Les référenceurs ont déjà dû voir le nom du deuxième cité puisqu'ils l'intègrent en général dans les lignes de code des fichiers .htaccess afin de maximiser la compression Gzip. Cela permet d'accélérer les pages mais surtout de réduire le temps de latence côté serveur. Dans le cas de Brotli, il faudrait donc passer par le mod_brotli pour procéder au même type de compression, mais en plus efficace (à condition que le module soit activé sur le serveur Apache). Il existe bien entendu des équivalents pour les serveurs Nginx, IIS, Litespeed ou encore Node.js selon vos besoins.

De nombreux navigateurs récents supportent la compression Brotli, et cela devrait se propager à l'avenir, notamment si les preuves de son efficacité affluent. Il suffit de vérifier sur le site caniuse.com si le "accept-encoding" et "content-encoding" de Brotli (appelé "br") est supporté pour compresser massivement les textes. Comme le montre la capture ci-dessous, l'indémodable Internet Explorer n'est pas compatible (cela surprend quelqu'un ? ^^), au même titre qu'Opera Mini (qui reste très peu utilisé), donc dans l'ensemble, c'est plus pas mal du tout à ce jour.

Caniuse et la compression Brotli pour le web

Il suffit de vérifier les entêtes avec les outils de développement pour voir si la compression "br" est prise en compte par votre navigateur. La capture suivante montre la vérification dans Google Chrome.

Vérification de l'accept-encoding Brotli (br)

Addy Osmani s'est basé sur ses propres tests mais aussi ceux de CertSimple. Le constat est sans appel, Brotli est bien meilleur que Gzip pour les formats de fichiers web côté client dans le cas d'une compression statique (il faudrait vérifier dans le cas d'une compression dynamique, à la volée), à des taux différents :

  • 21% de compression supplémentaire que Gzip pour HTML ;
  • 17% plus efficace que Gzip pour CSS ;
  • 14% plus compressé que Gzip pour Javascript.

Voici les résultats pour un fichier Javascript par exemple :

Compression Brotli contre compression Gzip pour les fichiers Javascript (js)

Et pour un fichier CSS :

Compression Brotli contre compression Gzip pour les fichiers CSS

Pour être efficace jusqu'au bout, sachez qu'il est conseillé de conserver le module Gzip sur le serveur (ou le CDN), en plus du module Brotli (testé avec Nginx dans les exemples précédents). En effet, en cas d'incompatibilité avec "br", c'est "gzip" qui est pris en compte pour offrir une compression aux utilisateurs. Brotli peut être prioritaire mais Gzip reste en second couteau pour assurer les arrières en cas de soucis. Notons également que Brotli ne peut pas compresser tous les types de fichiers (mais la grande majorité comme JS, JSON, CSS, SVG, HTML ou encore XML) et qu'il est inutile de compresser les fichiers d'images par ce biais (cela peut même faire "grossir" leur taille car ce n'est pas adapté aux images).

C'est plutôt une bonne nouvelle de voir des algorithmes de compression offrir des performances fortes et réduire considérablement le temps de latence côté serveur, en plus d'une vitesse accrue au chargement. Certes, cela demande un serveur qui propose le module Brotli, et des compétences techniques pour l'activer, mais le jeu en vaut la chandelle... ;-)