Plus un site est rapide (c’est justement notre cœur de métier), plus l’engagement des internautes est fort. Et pour accélérer un site web, les solutions ne manquent pas ! Alléger au maximum le poids des pages fait partie des moyens les plus efficaces et les plus évidents. En effet, moins il y a d’octets à télécharger sur le navigateur, plus le site est rapide. Ainsi, en toute logique, l’une des solutions consiste à optimiser la taille brute du code JavaScript et CSS en les minifiant, mais également à utiliser un algorithme de compression plus efficace.

Dans cet article, nous n’allons pas vous parler de viennoiserie suisse, mais de format de compression. Brotli, c’est en effet l’algorithme de compression qu’on retrouve derrière le format de font WOFF2 pour le trafic en HTTPS et que nous avons implémenté sur notre plateforme.
Fasterize supporte désormais ce format, alors voyons de plus près son fonctionnement et ses avantages, et comment l’activer.

Activez le support de Brotli sur Fasterize : le choc de simplification

Pour activer la compression Brotli, nous vous invitons à contacter l'équipe Support pour vous indiquer en quelques minutes comment faire, selon votre configuration et le cas échéant votre CDN.

Nous prenons en charge ce nouveau format de compression en assurant :

  • la pré-génération et la mise en cache des versions de fichiers compressés à la fois en Brotli et en Gzip pour toutes les ressources texte cachables : pages mises en cache, fichiers JS et CSS ;
  • et bien sûr la négociation de contenu pour servir la version Brotli aux navigateurs compatibles.

Pour aller plus loin : comment nous avons implémenté Brotli sur Fasterize

Nous avons choisi de faire appel à Brotli uniquement pour les ressources destinées à être mises en cache avec une compression de niveau 9. En complément de cette compression, les ressources sont également pré-générées en Gzip au niveau maximum pour les requêtes en HTTP et pour les navigateurs ne supportant pas Brotli. Nous verrons un plus loin les raisons de ces choix, dans la section dédiée aux caractéristiques techniques des différents formats de compression (suspense).

Ainsi, le cache de Fasterize stocke deux versions pour une même ressource en étant capable de servir la version Brotli aux navigateurs compatibles.

Sachez que Fasterize supporte aussi Brotli pour les communications avec l’origine. C’est-à-dire que si votre origine supporte Brotli, Fasterize sera en mesure de télécharger la réponse compressée via Brotli et de la décoder pour l’optimiser. Le moteur transmet alors l’en-tête Accept-Encoding annonçant le support de Gzip et de Brotli aux requêtes à l’origine.

Le principe de la négociation de contenu définie par HTTP 1.1 est le suivant :

  • Le navigateur précise les types d’encodage supportés dans le header Accept-Encoding (Gzip, Brotli, Deflate…) ;
  • Le serveur sert le fichier dans le format adapté et précise l’en-tête Content-Encoding associé.

Le match Brotli vs. Gzip : 1 - 0

Des chiffres qui parlent d’eux-mêmes

Nous avons mené l’enquête, et voici un constat à titre d’exemple pour l’un de nos clients (Nocibé) grâce à l’outil de test développé par Paul Calvano sur son blog : 12% de réduction du poids du fichier CSS grâce à Brotli !

LinkedIn a aussi mené une étude qui met en évidence les améliorations apportées sur la compression par Brotli, pouvant aller jusqu’à 30% avec Brotli 11 par rapport à Gzip 6.  

 

 

Par ailleurs, certsimple, Dropbox ou encore Facebook rapportent eux aussi des compressions améliorées de 14 à 21%.

Voyons maintenant de plus près les différences techniques avec Gzip et ce qui fait que Brotli est plus performant.

Les différences techniques entre Brotli et Gzip

Brotli est un algorithme de compression sans perte qui repose sur les mêmes bases que Gzip (encodages LZ77 et Huffman), développé par Google. Par rapport à Gzip, son taux de compression est amélioré pour plusieurs raisons :

  • Dictionnaire statique : le dictionnaire Brotli fait partie de l’implémentation et peut être référencé à n’importe quel endroit du flux, ce qui améliore son efficacité pour les fichiers lourds. Par ailleurs, des modifications peuvent y être apportées pour le compléter.
  • Taille de fenêtre élargie : Gzip utilise une taille de fenêtre fixe de 32KB, alors que Brotli peut en utiliser une variété allant de 1KB à 16MB.
  • Contexte de modélisation étendu : le contexte de modélisation (Context Modeling) est une fonctionnalité qui autorise des arbres de Huffman multiples dans un même alphabet et dans le même bloc pour s’adapter au contexte (formats, alphabets, caractères, langues…) grâce à 3 commandes (<insert, copy>, <distance>, <lit>).

Notez toutefois que l’amélioration du taux de compression sur les niveaux les plus élevés de Brotli (au-delà de 8) s’accompagne d’un temps de compression beaucoup plus long que Gzip.
En ce qui nous concerne, le délai des versions 10 et 11 de Brotli nous a semblé trop important par rapport au gain supplémentaire et compte tenu de l’échelle de Fasterize. Ceci explique notre choix du niveau de compression 9 (fin du suspense).

D’ailleurs, le benchmark Squash le démontre de façon évidente : Brotli au niveau 11 a une vitesse de compression de seulement 0.51MB/s. Cela empêche donc toute compression sur les hauts niveaux en temps réel sur des ressources dynamiques.
Ainsi, une compression en Brotli niveau 4 semble intéressante pour de la compression dynamique.

Navigateurs : qui supporte Brotli ? 

Les navigateurs suivants prennent en charge Brotli :

  • Chrome prend en charge Brotli depuis la version 49
  • Microsoft Edge prend en charge Brotli à partir de la version 15
  • Firefox implémente Brotli en version 44
  • Opera supporte Brotli depuis la version 36
  • Safari le prend en charge depuis la version 11.

En revanche, aucune version d'Internet Explorer (IE) ne prend en charge Brotli, mais la grande majorité des utilisateurs de Windows utilisent désormais Edge, Chrome ou Firefox.

Pour le Web mobile, le paysage des navigateurs est plus fragmenté et la prise en charge est moins bonne.

Taux d’adoption de Brotli sur le web

Alors, quid de l’adoption de Brotli dans le paysage de l’internet mondial ? HTTP Archive permet d’observer l’état du web technologiquement. Nous constatons que Brotli est encore peu implémenté sur les serveurs des sites les plus fréquentés / connus : en juin 2018, seulement 71% des ressources texte étaient compressées. Et parmi elles, 60% l’étaient en Gzip et seulement… 11% en Brotli.

Pourquoi cette faible adoption ? Parce que cela nécessite mettre à jour son serveur, le reconfigurer... soit revoir le processus de génération des ressources pour pré-générer les ressources texte en amont.  

Autre frein à l’adoption de Brotli : ce format est supporté uniquement en HTTPS. Ce choix a été fait pour éviter les problèmes de compatibilité et le risque de corruption des données avec intermédiaires tels que les proxy et scanners de contenus.

Et c’est là que Fasterize intervient pour vous faciliter le travail 😉

Vous souhaitez être informé.e.s des évolutions de notre plateforme et des actualités webperf ?
Abonnez-vous à notre newsletter !