gzip est un logiciel de com­pres­sion de données utilisé sur toutes les pla­te­formes, par­ti­cu­liè­re­ment prisé comme solution de com­pres­sion dans le dé­ve­lop­pe­ment Web ou dans les projets Web. gzip peut être activé et utilisé fa­ci­le­ment via l’outil de ligne de commande cor­res­pon­dant, afin d’éco­no­mi­ser de l’espace disque et d’améliorer les per­for­mances du système.

Comment fonc­tionne gzip ?

gzip, diminutif de « GNU zip », est basé sur l’al­go­rithme libre Deflate, qui combine les tech­niques de com­pres­sion de données LZ77 (Lempel-Ziv 77) et d’encodage Huffman. Grâce à elles, gzip scanne les fichiers à la recherche de chaînes de ca­rac­tères en double. Si le programme rencontre des séquences ré­pé­ti­tives, il les remplace par une référence à la première chaîne apparue, la longueur de ces séquences étant gé­né­ra­le­ment limitée à 32 000 octets. Ainsi, si une séquence de ca­rac­tères n’apparaît pas dans les 32 000 octets pré­cé­dents, elle est stockée sans com­pres­sion dans le fichier gzip, qui porte l’extension .gz.

La procédure est limitée à des fichiers in­di­vi­duels, c’est pourquoi vous avez également besoin du programme de com­pac­tage tar pour créer ce que l’on appelle des archives tarball avec les ex­ten­sions .tar.gz ou .tgz.

Par défaut, gzip supprime le fichier source après com­pres­sion. Vous pouvez toutefois dé­sac­ti­ver cette fonction au­to­ma­tique en spé­ci­fiant le paramètre optionnel -k.

Pour dé­com­pres­ser les paquets com­pres­sés, vous pouvez utiliser l’ap­pli­ca­tion gunzip ou la commande gzip cor­res­pon­dante.

gzip : syntaxe et aperçu des commandes

Il existe des in­ter­faces gra­phiques pour les dif­fé­rentes pla­te­formes, mais gzip peut également être utilisé via le terminal ou l’invite de commande. Même pour les débutants, cela reste assez simple, car gzip est un outil en ligne de commande classique optimisé pour ce type d’uti­li­sa­tion. La syntaxe générale est la suivante :

gzip option fichier(s)
bash

La spé­ci­fi­ca­tion des options n’est pas obli­ga­toire. Si le champ est vide, le programme utilise les pa­ra­mètres par défaut. Par exemple, la commande suivante est suf­fi­sante pour créer une version com­pres­sée du fichier texte exemple.txt :

gzip exemple.txt
bash

Cependant, pour dé­com­pres­ser les fichiers ul­té­rieu­re­ment ou donner des ins­truc­tions spé­ci­fiques sur le degré de com­pres­sion, l’em­pla­ce­ment ou la gestion du fichier d’origine, il est né­ces­saire d’utiliser les options ap­pro­priées. Le tableau suivant donne un aperçu des prin­ci­pales commandes gzip :

Option Des­crip­tion
-1-9 Définit le niveau de com­pres­sion (1-9) : la valeur 1 cor­res­pond à la com­pres­sion la plus faible et la plus rapide, et la valeur 9 à la meilleure (et plus lente) com­pres­sion ; la valeur par défaut est 5
-r Permet de parcourir la structure du ré­per­toire ré­cur­si­ve­ment, (y compris tous les sous-ré­per­toires) et, par exemple, compresse ou dé­com­presse tous les fichiers
-f Force la com­pres­sion gzip et écrase si né­ces­saire les fichiers existants avec le même nom de fichier
-d Pour dé­com­pres­ser le fichier et donc extraire le fichier sé­lec­tionné dans le ré­per­toire
-k Empêche la sup­pres­sion du fichier source
-l Pour afficher les in­for­ma­tions du fichier comme le taux de com­pres­sion d’un fichier compressé
-c Pour afficher les résultats de la com­pres­sion sur la sortie standard sans modifier les fichiers originaux. Gé­né­ra­le­ment l’écran est connecté à la ligne de commande
-q Désactive tous les messages gzip
-t Teste l’intégrité du fichier compressé
-h Liste toutes les options dis­po­nibles

Cas d’uti­li­sa­tion de la com­pres­sion gzip

gzip est com­pa­tible avec la plupart des pla­te­formes et ex­ten­sible selon les besoins, tant que la licence GPL choisie pour le projet est respectée. Sur les systèmes Linux, l’outil de com­pres­sion est gé­né­ra­le­ment installé au­to­ma­ti­que­ment ou inclus dans le ges­tion­naire de paquets, prêt à être installé. Des versions pour macOS et Windows sont également dis­po­nibles sur le site Web officiel de gzip. Pour éco­no­mi­ser de l’espace disque, vous pouvez utiliser le logiciel sur ces systèmes à tout moment.

Cet outil est également très utile sur le Web : les serveurs Web tels qu’Apache intègrent la com­pres­sion gzip depuis des années et les na­vi­ga­teurs modernes peuvent in­ter­pré­ter les fichiers com­pres­sés et les dé­com­pres­ser pendant le rendu du site Web. Ici, gzip peut montrer tous ses atouts : lorsque le processus est activé, le serveur Web initie au­to­ma­ti­que­ment la com­pres­sion des éléments du site Web té­lé­char­gés dans l’espace Web ainsi que des éléments générés dy­na­mi­que­ment. De cette manière, le temps de char­ge­ment peut être con­si­dé­ra­ble­ment réduit dans le cadre de l’op­ti­mi­sa­tion du site Web. Le na­vi­ga­teur dé­com­presse ensuite les fichiers en arrière-plan, sans consommer de bande passante sup­plé­men­taire. Les uti­li­sa­teurs d’appareils mobiles, en par­ti­cu­lier, profitent de ce boost de per­for­mance, qui a également un effet positif sur le clas­se­ment au sein des moteurs de recherche.

Comment activer la com­pres­sion gzip dans Apache

Les serveurs Web proposent gé­né­ra­le­ment la com­pres­sion gzip sous la forme d’un module qu’il suffit d’activer. Aujourd’hui, de nombreux hé­ber­geurs Web activent cette fonc­tion­na­lité par défaut, ce qui n’était pas toujours le cas au­pa­ra­vant. Si vous n’êtes pas sûr que la com­pres­sion gzip soit autorisée par votre hébergeur, vous pouvez soit le contacter di­rec­te­ment, soit lancer une requête manuelle.

Sur un serveur Web Apache, vous pouvez par exemple vérifier les pa­ra­mètres du module à l’aide d’un simple appel à phpinfo(). L’entrée HTTP_ACCEPT_ENCODING vous indique si une méthode de com­pres­sion a été sé­lec­tion­née et, le cas échéant, laquelle.

Si gzip est dis­po­nible, il existe trois manières dif­fé­rentes de l’utiliser : cela dépendra alors de vos besoins.

Option 1 : activer la com­pres­sion gzip dans le fichier .htaccess

Le fichier .htaccess vous permet de définir des pa­ra­mètres spé­ci­fiques aux ré­per­toires et de con­fi­gu­rer ainsi votre serveur Web en temps réel. Ceci est possible car le fichier de con­fi­gu­ra­tion qui se trouve dans le ré­per­toire racine est lu au­to­ma­ti­que­ment à chaque demande qui atteint le serveur. Toutefois, chez certains four­nis­seurs d’hé­ber­ge­ment Web, le fichier .htaccess est stocké dans un autre dossier, masqué ou ver­rouillé, même pour l’accès. Dans ce cas, vous devez alors contacter l’hébergeur et demander la li­bé­ra­tion du fichier. Si vous pouvez effectuer les con­fi­gu­ra­tions, activez la com­pres­sion gzip via le module de l’al­go­rithme Deflate (mod_deflate), et ajoutez le code suivant au fichier .htaccess :

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
txt
Conseil

L’au­to­ri­sa­tion de votre hébergeur est également né­ces­saire pour les deux modules mod_gzip et mod_deflate.

Option 2 : activer la com­pres­sion gzip via PHP

Il est possible d’activer le processus de com­pres­sion à l’aide d’une simple entrée PHP. L’in­con­vé­nient est que cette option nécessite l’ajout du code dans chaque fichier PHP concerné. Cette option n’est donc utile que si vous n’avez pas les au­to­ri­sa­tions né­ces­saires pour modifier le fichier .htaccess. La ligne de code à placer au début de chaque fichier est la suivante :

<?php
ob_start("ob_gzhandler");
?>
php

Option 3 : im­plé­men­ter gzip via un plugin

En plus des deux solutions manuelles pré­sen­tées, il existe une variante qui peut être mise en place avec un minimum d’effort : l’ac­ti­va­tion de la com­pres­sion gzip via un plugin pour le système de gestion de contenu que vous utilisez. Ces ex­ten­sions, que vous pouvez intégrer en quelques minutes et per­son­na­li­ser selon vos besoins, sont prin­ci­pa­le­ment dis­po­nibles pour les CMS basés sur PHP, comme WordPress. Découvrez ci-dessous trois des plugins les plus po­pu­laires pour ce CMS :

  • W3 Total Cache : le plugin WordPress W3 Total Cache promet une amé­lio­ra­tion nettement per­cep­tible des per­for­mances du site Web. En plus de divers mé­ca­nismes de mise en cache et de soutien pour les appareils mobiles et le ré­fé­ren­ce­ment en ligne, il permet aussi d’activer la com­pres­sion gzip.
  • WP Rocket : WP Rocket est également un plugin de mise en cache WordPress classique. L’extension est facile à utiliser et active d’emblée toutes les fonctions im­por­tantes d’op­ti­mi­sa­tion de la vitesse, y compris la com­pres­sion gzip.
  • WP Per­for­mance Score Booster : le plugin WP Per­for­mance Score Booster compte déjà plus de 10 000 ins­tal­la­tions actives. Il vous permet d’activer fa­ci­le­ment gzip et de com­pres­ser ef­fi­ca­ce­ment le contenu de votre projet Web, notamment les textes, HTML, Ja­vaS­cript, CSS, et XML, entre autres.

Con­fi­gu­rer gzip sur un serveur Web NGINX : ins­truc­tions

Si vous diffusez le contenu de votre site Web à l’aide d’un serveur NGINX, vous pouvez utiliser gzip. Il vous suffit pour ce faire de con­fi­gu­rer le module ngx_http_gzip_module. Par défaut, la directive gzip per­met­tant d’activer ou de dé­sac­ti­ver le service de com­pres­sion est dé­sac­ti­vée.

Pour modifier ce paramètre, ouvrez le fichier de con­fi­gu­ra­tion central nginx.conf et re­cher­chez la directive gzip. Remplacez l’entrée gzip off par gzip on. Le tableau suivant donne la sig­ni­fi­ca­tion et les pos­si­bi­li­tés de quelques di­rec­tives sup­plé­men­taires pour con­fi­gu­rer la com­pres­sion gzip NGINX :

Directive Syntaxe Valeur par défaut Des­crip­tion
gzip_buffers gzip_buffers nombre taille; gzip_buffers 32 4k ou 16 8k; Définit le nombre et la taille des tampons utilisés pour la com­pres­sion
gzip_comp_level gzip_comp_level niveau; gzip_comp_level 1; Définit le niveau de com­pres­sion ; valeurs possibles : de 1 à 9
gzip_min_length gzip_min_length longueur_min; gzip_min_length 20; Spécifie la longueur minimale d’un fichier compressé en octets
gzip_http_version gzip_http_version version; gzip_http_version 1.1; Indique à partir de quelle version HTTP une réponse peut être com­pres­sée
gzip_types gzip_types type_contenu; gzip_types text/html; Détermine les types de contenu à com­pres­ser (exemples : CSS, JSON, XML, etc.)

Pour tester la com­pres­sion gzip

Une fois que vous avez configuré la com­pres­sion gzip pour vos sites Web, vous pouvez utiliser dif­fé­rents outils pour vérifier que le processus fonc­tionne comme prévu et que votre serveur Web délivre du contenu compressé. L’un des outils les plus utiles est Google PageSpeed Insights. Après avoir saisi une page de votre site, l’outil analyse au­to­ma­ti­que­ment le contenu et vous informe sur ses points forts et ses points faibles. Vous pouvez ainsi savoir si la com­pres­sion gzip est activée. Vous pouvez également effectuer une vé­ri­fi­ca­tion en utilisant le test de com­pres­sion HTTP sur WhatsMyIP.org.

Aller au menu principal