Gzip vs Brotli - Quelle méthode de compression devriez-vous utiliser et pourquoi

Publié: 2018-03-02

Gzip est devenu la référence en matière de compression de fichiers au début des années 1990, mais si vous l'utilisez toujours en 2018, vous voudrez peut-être envisager de passer à une méthode de compression plus récente.

Bien que Gzip ait toujours sa place dans le cœur de beaucoup, les développeurs Web se tournent de plus en plus vers des options supérieures telles que l'algorithme de compression Brotli de Google.

Une brève histoire de la compression de fichiers

Le "G" dans Gzip est l'abréviation de GNU. GNU est un système d'exploitation open source basé sur Unix qui a été développé dans les années 1980. À cette époque, Unisys et IBM avaient déjà breveté leurs propres algorithmes de compression et de décompression de fichiers, ce qui permettait à leurs machines de stocker davantage de données. Par conséquent, les programmeurs Jean-loup Gailly et Mark Adler ont créé Gzip comme alternative gratuite pour les utilisateurs de GNU.

Le nouveau Gzip n'était pas seulement une contrefaçon bon marché ; il était en fait plus rapide que ses concurrents protégés par le droit d'auteur. En conséquence, les gens l'utilisent encore pour la compression de fichiers à ce jour. Bien qu'il soit facile de s'en tenir à ce avec quoi vous êtes à l'aise, il existe divers algorithmes de compression qui fournissent actuellement de meilleurs résultats de compression que Gzip. C'est là qu'intervient Brotli.

C'est quoi Brotli ?

Brotli est une spécification de format de données plus récente qui tire parti de plusieurs algorithmes pour condenser les données plus efficacement que Gzip. En 2015, la spécification Brotli a été généralisée pour la compression de flux HTTP avec le type d'encodage de contenu « br ».

Brotli Content Encoding

Développé par Jyrki Alakuijala et Zoltan Szabadka, Brotli utilise les mêmes algorithmes de compression que Gzip, mais il est également pris en charge par un dictionnaire de mots et de phrases fréquemment utilisés pour offrir un meilleur taux de compression.

Gardez à l'esprit que Gzip et Brotli ne doivent être utilisés que pour compresser des fichiers texte. Les fichiers binaires tels que JPEG et MP4 reposent sur leurs propres algorithmes de compression spécifiques au format. Si vous essayez de compresser un JPEG avec Brotli, le fichier résultant sera en fait plus gros que l'original.

Bien qu'il n'en ait pas toujours été ainsi, Brotli est désormais pris en charge par tous les principaux navigateurs.

Brotli Support

Dans le cas où un navigateur qui ne prend pas en charge Brotli demande une ressource à un site fournissant des fichiers compressés Brotli, le serveur se rabattra sur Gzip et fournira les ressources encodées que le navigateur prend en charge - étant donné que le serveur est correctement configuré.

Qu'est-ce qui rend Brotli meilleur?

Selon les recherches menées par CertSimple :

  • Les bundles JavaScript compressés avec Brotli sont 14 % plus petits que les bundles Javascript compressés avec Gzip.
  • Les fichiers HTML compressés par Broti sont 21 % plus petits que leurs équivalents Gzip.
  • Les fichiers CSS compressés par Brotli sont 17 % plus petits que ceux compressés par Gzip.

Étant donné que la plupart des sites Web s'appuient sur ces trois types d'actifs, il s'agit d'une différence considérable dans la taille des actifs par rapport à Gzip. Ces économies, à leur tour, amélioreront sensiblement les performances de votre application.

Gzip vs Brotli : tirer le meilleur parti de Brotli

Malgré ce que vous avez pu entendre, compresser des ressources avec Brotli n'est pas plus lent que Gzip. Cela dit, Gzip et Brotli offrent des niveaux de compression variables, et les paramètres par défaut de Brotli peuvent entraîner une compression plus lente que les paramètres par défaut de Gzip. Vous devrez apporter quelques ajustements à Brotli pour trouver un équilibre acceptable entre la taille du fichier et la vitesse de compression.

Le réglage de compression idéal dépend de quoi et quand vous compressez. Un bon point de départ est Brotli 4 pour une compression plus rapide du contenu dynamique. D'autre part, les actifs statiques peuvent être compressés plus densément au préalable sans sacrifier la vitesse, de sorte que le paramètre par défaut de "11" est plus approprié pour un tel contenu.

Installation de Brotli sur votre serveur Web

L'ajout de la prise en charge de Brotli offre des gains significatifs pour un effort minimal. Selon le logiciel de serveur Web que vous utilisez, vous déterminerez la méthode d'intégration que vous devrez utiliser pour intégrer Brotli. Voici quelques options disponibles :

  • Nginx a une extension Brotli proposée par Google.
  • Apache propose une extension Brotli dédiée.
  • Microsoft IIS n'offre aucune prise en charge officielle de Brotli, mais il existe un module communautaire qui ajoute la prise en charge.
  • Node.js est similaire à Microsoft en ce qu'il n'y a pas de support officiel, mais il existe un module communautaire.

Pour illustrer un exemple d'installation rapide, supposons que vous utilisez Nginx. Dans ce cas, vous pouvez installer le module ngx_brotli avec les éléments suivants :

cd nginx-1.x.x
$ ./configure --add-module=/path/to/ngx_brotli
$ make && make install

Ensuite, ajoutez ce qui suit au bloc HTTPS (Brotli ne fonctionne que sur HTTPS) :

brotli on;
brotli_static on;
brotli_comp_level 4;
brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;

Vous pouvez modifier les directives ci-dessus comme bon vous semble.

Enfin, entrez ce qui suit pour redémarrer NGINX et commencer à en récolter les bénéfices :

sudo systemctl restart nginx
Utilisation de Brotli avec des actifs pré-compressés

Brotli est idéal pour fournir des ressources pré-compressées beaucoup plus rapidement que Gzip. Cela est dû au fait que vous pouvez les compresser au niveau le plus élevé de Brotli (11) et que le serveur d'origine les récupère à la demande.

Ce type de configuration fonctionne très bien avec Webpack car un plugin Webpack est disponible pour compresser automatiquement vos ressources statiques en tant que Gzip et Brotli. Par conséquent, aucune compression à la volée n'est requise, ce qui signifie que le temps passé à compresser les fichiers est économisé.

En savoir plus sur l'utilisation de Webpack pour générer des actifs compressés Brotli.

Votre CDN prend-il en charge Brotli ?

Pour profiter pleinement des avantages de Brotli, vous avez besoin d'un réseau de diffusion de contenu qui le prend en charge. KeyCDN, par exemple, a introduit le support Brotli l'année dernière pour tous les clients sans frais supplémentaires. Par conséquent, non seulement votre site bénéficiera de tailles de fichiers réduites grâce à une meilleure compression Brotli, mais il bénéficiera également d'une latence réduite grâce aux actifs mis en cache sur des serveurs périphériques plus proches de vos visiteurs.

Cette méthode nécessite que votre serveur d'origine prenne en charge Brotli et que la compression réelle se produise du côté du serveur d'origine. Encore une fois, cela permet de gagner du temps et d'éviter le besoin d'une compression à la volée qui peut nuire aux performances.

Gzip contre Brotli : en résumé

Le petit effort requis pour ajouter Brotli à votre serveur Web vaut bien les économies substantielles de taille de fichier. Bien que Brotli puisse parfois fonctionner plus lentement avec ses paramètres de compression les plus élevés, vous pouvez facilement atteindre un équilibre idéal entre la vitesse de compression et la taille du fichier en ajustant les paramètres.

Bien que l'utilisation de Brotli puisse transformer des applications Web rapides en applications Web plus rapides, cela ne rendra pas nécessairement les applications lentes plus rapides. Étant donné que Brotli ne compresse que les ressources textuelles, vous devrez optimiser vos images par d'autres moyens. Si vous n'avez pas encore fait le saut vers HTTP/2, cela peut faire une énorme différence dans les performances de votre application. Chaque milliseconde compte, donc toute action que vous entreprenez pour accélérer votre application améliore vos chances de fidéliser les utilisateurs.