Brotli, le nouveau Gzip

Brotli est un algorithme de compression open source sans perte développé par Google. Conçu à l'origine pour réduire la taille des polices Web, Brotli fonctionne désormais comme un format universel pour les données compressées. Brotli agit comme une alternative à gzip et Deflate, générant des fichiers plus petits et décompressant tout aussi rapidement.

Brotli offre des taux de compression nettement plus élevés que Deflate au prix d'une utilisation plus élevée du processeur. Dans une étude réalisée en 2015 par Google , le niveau de compression le plus élevé de Brotli offrait un taux de compression 29% plus élevé que le niveau le plus élevé de Deflate. Cependant, les vitesses de compression et de décompression de Brotli à ce niveau étaient respectivement plus lentes.

En raison de ses vitesses de compression relativement lentes, les entreprises utilisent Brotli pour compresser les fichiers à l'avance. En 2017, Dropbox a converti le contenu statique de dropbox.com en Brotli, réduisant la taille de leurs actifs de 20 à 25% en moyenne . Étant donné que le contenu est statique, Dropbox peut pré-compresser les fichiers pendant le processus de génération et les servir directement aux utilisateurs.

 

Comment utiliser Brotli?

Plusieurs des serveurs Web les plus populaires prennent en charge Brotli en mode natif ou à l'aide de modules. Plusieurs CDN offrent également un support pour Brotli.

Comme gzip, zlib et Deflate, Brotli propose plusieurs niveaux de compression. Des niveaux plus élevés offrent généralement de meilleurs taux de compression à des vitesses plus lentes, le niveau 1 étant le plus rapide et 11 étant le plus lent. 

Le niveau 5 est recommandé comme un bon équilibre entre la taille du fichier et la vitesse, en particulier pour la compression dynamique.

 

Apache

Apache prend en charge Brotli via le module mod_brotli, qui a été ajouté dans la version 2.4.26. Sous Cpanel, il vous suffit de vous diriger dans EasyApache et d'activer le module apache

 

La configuration de base est :

AddOutputFilterByType BROTLI_COMPRESS text/plain text/css text/html application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript
SetOutputFilter BROTLI_COMPRESS
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-brotli

 

Enregistré dans le fichier suivant

/etc/apache2/conf.d/brotli.conf

 

Hors Cpanel vous pouvez optimiser votre configuration Brotli en ajoutant les éléments suivants à votre configuration d'hôte virtuel:

# Compress common text-based MIME types
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript application/javascript

# Skip content that's already compressed
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-brotli

# Sets the compression level (defaults to 5)
BrotliCompressionQuality 6

mod_brotli recompresse le contenu de chaque demande. Pour servir des fichiers précompressés, copiez vos fichiers Brotli dans un dossier accessible par Apache. Ensuite, ajoutez une condition de réécriture à votre configuration d'hôte virtuel qui sert ces fichiers à la place de leurs équivalents gzip.

 

# Serve brotli compressed CSS files if they exist and the client accepts brotli.
RewriteCond "%{HTTP:Accept-encoding}" "br"
RewriteCond "%{REQUEST_FILENAME}\.br" "-s"
RewriteRule "^(.*)\.css" "$1\.css\.br" [QSA]

# Serve brotli compressed JS files if they exist and the client accepts brotli.
RewriteCond "%{HTTP:Accept-encoding}" "br"
RewriteCond "%{REQUEST_FILENAME}\.br" "-s"
RewriteRule "^(.*)\.js" "$1\.js\.br" [QSA]

# Serve correct content types, and prevent double compression.
RewriteRule "\.css\.br$" "-" [T=text/css,E=no-brotli:1]
RewriteRule "\.js\.br$" "-" [T=text/javascript,E=no-brotli:1]

<FilesMatch "(\.js\.br|\.css\.br)$">
# Serve correct encoding type.
Header append Content-Encoding br

# Force proxies to cache brotli &
# non-brotli css/js files separately.
Header append Vary Accept-Encoding
</FilesMatch>


Nginx

Nginx prend en charge Brotli via le module ngx_brotli . Le module se compose en fait de deux modules distincts: un pour la compression à la volée et un autre pour les fichiers précompressés. Vous devrez compiler Nginx avec le module inclus afin d'utiliser Brotli.

brotli on; # Enables on-the-fly compression.
brotli_static on; # Enables serving pre-compressed files.
brotli_types *; # Enables compression for all MIME types. text/html responses are always compressed.
brotli_comp_level 6; # Sets the compression level (defaults to 6).


Conclusion

Brotli représente une nouvelle génération de compression et de stockage de données. Avec la possibilité de réduire la taille des pages Web de 20%, Brotli conduira à un Web plus rapide et plus petit. Vous pouvez en savoir plus sur Brotli sur la page officielle de GitHub.

  • 0 Utilisateurs l'ont trouvée utile
Cette réponse était-elle pertinente?

Articles connexes

mysql_upgrade failes due to "1045: Access denied"

Erreur lors de la tentative de mise à niveau des tables mysql à l'aide de mysql_upgrade :...

Changement d'IP d'une VM via console

Bonjour, Vous êtes amenés à changer l'ip d'une VM ? C'est simple, passez via la console (KVM,...

Comment optimiser Exim sur cPanel / WHM

Prêt à optimiser Exim sur cPanel?   Par défaut, Exim utilise par défaut de vieilles valeurs...

Erreur "INFO: trying to get global lock - waiting..."

Bonjour,Lorsque vous tentez d'effectuer un Dump d'une machine OpeVZ vous obtenez cette erreur ?...

Virtuozzo / OpenVZ - Augmenter la limite INODE

Certains modèles de Templates nécessitent une limite d'inode supérieure pour pouvoir être...

Powered by WHMCompleteSolution