Qu’est-ce que gzip ? Comment utiliser cet outil ?
gzip est un logiciel de compression de données utilisé sur toutes les plateformes, particulièrement prisé comme solution de compression dans le développement Web ou dans les projets Web. gzip peut être activé et utilisé facilement via l’outil de ligne de commande correspondant, afin d’économiser de l’espace disque et d’améliorer les performances du système.
Comment fonctionne gzip ?
gzip, diminutif de « GNU zip », est basé sur l’algorithme libre Deflate, qui combine les techniques de compression de données LZ77 (Lempel-Ziv 77) et d’encodage Huffman. Grâce à elles, gzip scanne les fichiers à la recherche de chaînes de caractères en double. Si le programme rencontre des séquences répétitives, il les remplace par une référence à la première chaîne apparue, la longueur de ces séquences étant généralement limitée à 32 000 octets. Ainsi, si une séquence de caractères n’apparaît pas dans les 32 000 octets précédents, elle est stockée sans compression dans le fichier gzip, qui porte l’extension .gz.
La procédure est limitée à des fichiers individuels, c’est pourquoi vous avez également besoin du programme de compactage tar pour créer ce que l’on appelle des archives tarball avec les extensions .tar.gz ou .tgz.
Par défaut, gzip supprime le fichier source après compression. Vous pouvez toutefois désactiver cette fonction automatique en spécifiant le paramètre optionnel -k
.
Pour décompresser les paquets compressés, vous pouvez utiliser l’application gunzip ou la commande gzip correspondante.
gzip : syntaxe et aperçu des commandes
Il existe des interfaces graphiques pour les différentes plateformes, 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’utilisation. La syntaxe générale est la suivante :
gzip option fichier(s)
bashLa spécification des options n’est pas obligatoire. Si le champ est vide, le programme utilise les paramètres par défaut. Par exemple, la commande suivante est suffisante pour créer une version compressée du fichier texte exemple.txt
:
gzip exemple.txt
bashCependant, pour décompresser les fichiers ultérieurement ou donner des instructions spécifiques sur le degré de compression, l’emplacement ou la gestion du fichier d’origine, il est nécessaire d’utiliser les options appropriées. Le tableau suivant donne un aperçu des principales commandes gzip :
Option | Description |
---|---|
-1 … -9
|
Définit le niveau de compression (1-9) : la valeur 1 correspond à la compression la plus faible et la plus rapide, et la valeur 9 à la meilleure (et plus lente) compression ; la valeur par défaut est 5
|
-r
|
Permet de parcourir la structure du répertoire récursivement, (y compris tous les sous-répertoires) et, par exemple, compresse ou décompresse tous les fichiers |
-f
|
Force la compression gzip et écrase si nécessaire les fichiers existants avec le même nom de fichier |
-d
|
Pour décompresser le fichier et donc extraire le fichier sélectionné dans le répertoire |
-k
|
Empêche la suppression du fichier source |
-l
|
Pour afficher les informations du fichier comme le taux de compression d’un fichier compressé |
-c
|
Pour afficher les résultats de la compression sur la sortie standard sans modifier les fichiers originaux. Généralement 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 disponibles |
Cas d’utilisation de la compression gzip
gzip est compatible avec la plupart des plateformes et extensible selon les besoins, tant que la licence GPL choisie pour le projet est respectée. Sur les systèmes Linux, l’outil de compression est généralement installé automatiquement ou inclus dans le gestionnaire de paquets, prêt à être installé. Des versions pour macOS et Windows sont également disponibles sur le site Web officiel de gzip. Pour économiser 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 compression gzip depuis des années et les navigateurs modernes peuvent interpréter les fichiers compressés et les décompresser pendant le rendu du site Web. Ici, gzip peut montrer tous ses atouts : lorsque le processus est activé, le serveur Web initie automatiquement la compression des éléments du site Web téléchargés dans l’espace Web ainsi que des éléments générés dynamiquement. De cette manière, le temps de chargement peut être considérablement réduit dans le cadre de l’optimisation du site Web. Le navigateur décompresse ensuite les fichiers en arrière-plan, sans consommer de bande passante supplémentaire. Les utilisateurs d’appareils mobiles, en particulier, profitent de ce boost de performance, qui a également un effet positif sur le classement au sein des moteurs de recherche.
Comment activer la compression gzip dans Apache
Les serveurs Web proposent généralement la compression gzip sous la forme d’un module qu’il suffit d’activer. Aujourd’hui, de nombreux hébergeurs Web activent cette fonctionnalité par défaut, ce qui n’était pas toujours le cas auparavant. Si vous n’êtes pas sûr que la compression gzip soit autorisée par votre hébergeur, vous pouvez soit le contacter directement, soit lancer une requête manuelle.
Sur un serveur Web Apache, vous pouvez par exemple vérifier les paramètres du module à l’aide d’un simple appel à phpinfo()
. L’entrée HTTP_ACCEPT_ENCODING
vous indique si une méthode de compression a été sélectionnée et, le cas échéant, laquelle.
Si gzip est disponible, il existe trois manières différentes de l’utiliser : cela dépendra alors de vos besoins.
Option 1 : activer la compression gzip dans le fichier .htaccess
Le fichier .htaccess vous permet de définir des paramètres spécifiques aux répertoires et de configurer ainsi votre serveur Web en temps réel. Ceci est possible car le fichier de configuration qui se trouve dans le répertoire racine est lu automatiquement à chaque demande qui atteint le serveur. Toutefois, chez certains fournisseurs d’hébergement Web, le fichier .htaccess est stocké dans un autre dossier, masqué ou verrouillé, même pour l’accès. Dans ce cas, vous devez alors contacter l’hébergeur et demander la libération du fichier. Si vous pouvez effectuer les configurations, activez la compression gzip via le module de l’algorithme 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>
txtL’autorisation de votre hébergeur est également nécessaire pour les deux modules mod_gzip
et mod_deflate
.
Option 2 : activer la compression gzip via PHP
Il est possible d’activer le processus de compression à l’aide d’une simple entrée PHP. L’inconvé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 autorisations nécessaires pour modifier le fichier .htaccess. La ligne de code à placer au début de chaque fichier est la suivante :
<?php
ob_start("ob_gzhandler");
?>
phpOption 3 : implémenter gzip via un plugin
En plus des deux solutions manuelles présentées, il existe une variante qui peut être mise en place avec un minimum d’effort : l’activation de la compression gzip via un plugin pour le système de gestion de contenu que vous utilisez. Ces extensions, que vous pouvez intégrer en quelques minutes et personnaliser selon vos besoins, sont principalement disponibles pour les CMS basés sur PHP, comme WordPress. Découvrez ci-dessous trois des plugins les plus populaires pour ce CMS :
- W3 Total Cache : le plugin WordPress W3 Total Cache promet une amélioration nettement perceptible des performances du site Web. En plus de divers mécanismes de mise en cache et de soutien pour les appareils mobiles et le référencement en ligne, il permet aussi d’activer la compression 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 importantes d’optimisation de la vitesse, y compris la compression gzip.
- WP Performance Score Booster : le plugin WP Performance Score Booster compte déjà plus de 10 000 installations actives. Il vous permet d’activer facilement gzip et de compresser efficacement le contenu de votre projet Web, notamment les textes, HTML, JavaScript, CSS, et XML, entre autres.
Configurer gzip sur un serveur Web NGINX : instructions
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 configurer le module ngx_http_gzip_module
. Par défaut, la directive gzip
permettant d’activer ou de désactiver le service de compression est désactivée.
Pour modifier ce paramètre, ouvrez le fichier de configuration central nginx.conf
et recherchez la directive gzip
. Remplacez l’entrée gzip off
par gzip on
. Le tableau suivant donne la signification et les possibilités de quelques directives supplémentaires pour configurer la compression gzip NGINX :
Directive | Syntaxe | Valeur par défaut | Description |
---|---|---|---|
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 compression |
gzip_comp_level
|
gzip_comp_level niveau;
|
gzip_comp_level 1;
|
Définit le niveau de compression ; 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 compressée |
gzip_types
|
gzip_types type_contenu;
|
gzip_types text/html;
|
Détermine les types de contenu à compresser (exemples : CSS, JSON, XML, etc.) |
Pour tester la compression gzip
Une fois que vous avez configuré la compression gzip pour vos sites Web, vous pouvez utiliser différents outils pour vérifier que le processus fonctionne 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 automatiquement le contenu et vous informe sur ses points forts et ses points faibles. Vous pouvez ainsi savoir si la compression gzip est activée. Vous pouvez également effectuer une vérification en utilisant le test de compression HTTP sur WhatsMyIP.org.