Utilisation de la compression HTTP pour améliorer les performances du Web

Pour toute application accédée par le réseau, la réduction du temps de transfert (nécessaire pour transférer les données du serveur au client) améliore toujours les performances du web.

Vous pouvez obtenir de meilleurs temps de chargement des pages en réduisant :

  1. la fréquence à laquelle le serveur doit envoyer des données en utilisant des techniques de mise en cache
  2. la taille des données transférées en utilisant la compression HTTP

Comme son titre l’indique, la compression HTTP réduit la taille d’un fichier sur le serveur avant sa transmission au client. De cette façon, la compression HTTP rend les transferts de fichiers plus rapides et contribue à réduire les temps de chargement des pages et donc à améliorer les performances web.

Voyons comment vous pouvez mettre en œuvre la compression pour définir la meilleure façon d’optimiser les performances du Web dans votre contexte.

2 types de compression HTTP

Il existe deux grandes catégories de compression :

  • sans perte
  • avec perte.

Lorsque l’on compresse des données avec une compression sans perte, après décompression, on peut retrouver les données originales. Ceci est bien sûr important lors de la compression de textes (corps HTTP). D’autres types de formats de fichiers qui utilisent cette technique de compression sont les images PNG et GIF, les documents PDF et SWF, ainsi que les polices WOFF.

En revanche, la décompression de données compressées avec perte ne permet pas de récupérer les données originales. Au lieu de cela, vous obtenez un substitut qui ressemble à l’original de près ou de loin, selon la qualité de l’algorithme de compression utilisé. Cette technique est généralement utilisée dans les formats qui permettent une certaine diminution des détails qui ne seront pas remarqués par les humains. Comme par exemple dans les formats de fichiers audio MP3, vidéo MPEG et image JPEG.

Que faut-il compresser pour améliorer les performances du web ?

Quel contenu HTTP devez-vous compresser ?

Comme la compression apporte des améliorations significatives aux performances du Web, nous recommandons de l’activer pour tous les fichiers, à l’exception des fichiers déjà compressés.

Essayer de compresser des fichiers déjà compressés comme les ZIP et les GIF peut en effet être totalement improductif. Si l’on essaie de les compresser, on prend le risque de :

  • Augmenter la taille du message de réponse
  • Gaspiller le temps CPU du serveur.

Compression du corps HTTP

Les formats de compression les plus couramment utilisés sont gzip, Brotli (br) and deflate.

Pour décompresser correctement les fichiers, le client et le serveur doivent communiquer sur le support et l’utilisation du ou des formats de compression. 

Pour que cela se produise :

  • Le client envoie l’en-tête de la requête Accept-Encoding qui annonce le codage du contenu qu’il est en mesure de comprendre.
  • En retour, le serveur indique quel algorithme de compression a été utilisé pour une réponse donnée au moyen de l’en-tête de la réponse HTTP Content-Encoding .

Au-delà de la compression du corps HTTP, compression de l’en-tête HTTP

Jusqu’à présent, nous avons abordé la compression de contenu pour les fichiers inclus dans le <body> d’un fichier HTML.

Qu’en est-il de l’en-tête HTTP lui-même ? Comme l’en-tête HTTP est évidemment envoyé avec chaque demande/réponse, la réduction de sa taille peut améliorer considérablement les performances du web.

Le protocole HTTP/2 a introduit la compression des en-têtes HTTP. Elle est appelée HPACKLes tentatives précédentes utilisaient GZIP mais introduisaient des failles de sécurité. Ce type d’implémentation était vulnérable à des attaques comme CRIME.

Par exception, veuillez noter la limitation de cette technique : elle n’est efficace que dans le cas où l’en-tête ne change pas de message en message. Plus de détails peuvent être trouvés ici.

À retenir : comment réduire le temps de chargement des pages grâce à la compression

En conclusion, avec la mise en cache du contenu, la compression est l’un des moyens fondamentaux et rentables d’améliorer les performances du web.

  1. Tout d’abord, vous devez systématiquement compresser le contenu non compressé comme le texte. 
  2. En outre, utilisez HTTP/2 lorsque cela est possible. Entre autres avantages, il offre une capacité de compression sécurisée des en-têtes HTTP.
  3. Enfin, vous devez surveiller la façon dont vos serveurs web et les fournisseurs de services tiers, comme les CDN, diffusent le contenu. C’est la clé pour optimise la fourniture de vos services numériques et garantir une expérience utilisateur optimale.