Activer la compression dynamique

La compression dynamique compresse automatiquement les réponses diffusées par Cloud CDN. La taille des données envoyées sur le réseau est réduite de 60 à 85 % dans les cas typiques.

Cette réduction de taille diminue le temps de téléchargement du contenu. Sur les éléments importants tels que les feuilles de style (CSS), les scripts (JavaScript) et les fichiers manifestes de vidéo (HLS/DASH), cela peut réduire le temps de chargement des pages et le délai de lancement des vidéos.

Pour en savoir plus sur les avantages de la compression des réponses, consultez le guide des fondamentaux du Web.

Vous pouvez activer la compression sur un service de backend ou sur un bucket backend.

Exemples de cas d'utilisation

La compression dynamique réduit directement la taille des données envoyées de la périphérie de Cloud CDN au client. Cela permet d'obtenir directement les résultats suivants :

  • Réduction de la taille des fichiers CSS et JavaScript, ce qui permet aux pages Web de s'afficher plus rapidement et réduit le délai avant le First Contentful Paint, une métrique de performances Web importante.
  • Impact important et positif lors de la mise en cache des réponses d'API REST, telles que des charges utiles JSON. La compression de ces charges utiles est très efficace du fait de la répétition des caractères, des espaces et des accolades. La mise en cache d'API publiques pendant 5 à 10 secondes est une approche populaire pour réduire la charge d'origine tout en préservant l'actualisation des données.

    Même sans mise en cache, la compression de ces réponses peut réduire le nombre total d'octets envoyés jusqu'à 90 %.

  • Amélioration du délai de démarrage de la lecture pour la diffusion de vidéos et de la latence pour rejoindre une diffusion en direct. Les grandes playlists en direct (fichiers manifestes) contiennent une quantité importante de données répétées, y compris le préfixe d'hôte et de chemin d'accès de chaque séquence, ainsi que les métadonnées de playlist HLS ou DASH. Plus le téléchargement de la playlist ou de ses mises à jour est rapide, moins le client doit attendre pour analyser et commencer à télécharger les séquences vidéo référencées. La taille des playlists HLS et DASH présente souvent une réduction totale de plus de 90 %.

Avant de commencer

Assurez-vous de disposer des éléments suivants :

  • Un backend configuré, sur lequel CDN est activé. Si vous n'avez pas configuré Cloud CDN, vous pouvez suivre l'un des guides de configuration.
  • Votre backend héberge un contenu compressible prêt à être diffusé, tel que des éléments Web ou des fichiers manifestes vidéo dont la taille est comprise entre 1 Kio et 10 Mio (inclus).
  • Les clients ne s'appuient pas sur la récupération de contenu partiel avec des requêtes de plage ou des ETags renforcés. Ces éléments sont incompatibles avec la compression dynamique.
  • Les clients peuvent gérer les réponses sans en-têtes Content-Length. Par exemple, les défauts de cache (miss) compressés par Cloud CDN ne comportent pas d'en-têtes Content-Length.
  • Vous disposez du rôle d'administrateur de l'équilibreur de charge Compute (roles/compute.loadBalancerAdmin), qui est nécessaire pour modifier votre configuration de backend.

Activer la compression sur un service de backend ou un bucket backend

Pour activer la compression, procédez comme suit :

Console

Ajouter une origine

Pour ajouter et configurer une origine, suivez les instructions de la section Présentation de la configuration correspondant au type de backend adéquat. Lorsque vous créez votre origine, utilisez la section Options avancées pour configurer la compression dynamique en sélectionnant Automatique dans la liste Mode de compression.

Modifier une origine existante

Pour modifier une origine Cloud CDN existante, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Origines de Cloud CDN.

    Accéder à la page Origines

  2. Cliquez sur le nom de l'origine que vous souhaitez modifier, puis sur Modifier.

  3. Dans la section Blocs de base de l'origine, cliquez sur Suivant.

  4. Dans la section Règles d'hôte et de chemin d'accès, cliquez sur Suivant.

  5. Dans la section Performances des caches, accédez à Options avancées.

  6. Dans la liste Mode de compression, sélectionnez Automatique.

  7. Pour appliquer vos modifications, cliquez sur OK.

gcloud

Pour les services de backend, exécutez la commande gcloud compute backend-services create ou la commande gcloud compute backend-services update avec l'option --compression-mode.

Pour les buckets backend, exécutez la commande gcloud compute backend-buckets create ou la commande gcloud compute backend-buckets update avec l'option --compression-mode.

Pour un nouveau service de backend, utilisez la commande create.

gcloud compute backend-services create BACKEND_SERVICE_NAME \
    --compression-mode=AUTOMATIC

Pour un service de backend existant, utilisez la commande update.

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --compression-mode=AUTOMATIC

Pour un nouveau bucket backend, utilisez la commande create.

gcloud compute backend-buckets create BACKEND_BUCKET_NAME
    --compression-mode=AUTOMATIC

Pour un bucket backend existant, utilisez la commande update.

gcloud compute backend-buckets update BACKEND_BUCKET_NAME
    --compression-mode=AUTOMATIC

L'élément compression-mode peut prendre l'une des valeurs suivantes :

  • AUTOMATIC : utilise automatiquement la meilleure compression en fonction de l'en-tête Accept-Encoding envoyé par le client. Dans la plupart des cas, cela conduit à privilégier la compression Brotli.
  • DISABLED (par défaut) : désactive la compression.

API

Pour les services de backend, utilisez la méthode backendServices.insert ou la méthode backendServices.update.

Pour les buckets backend, utilisez la méthode backendBuckets.insert ou la méthode backendBuckets.update.

Utilisez l'une des commandes suivantes :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET

Ajoutez l'extrait suivant au corps de la requête JSON :

"compressionMode": AUTOMATIC

L'élément compression-mode peut prendre l'une des valeurs suivantes :

  • AUTOMATIC (recommandé) : utilise automatiquement la meilleure compression en fonction de l'en-tête Accept-Encoding envoyé par le client. Dans la plupart des cas, cela conduit à privilégier la compression Brotli.
  • DISABLED (par défaut) : désactive la compression.

En quelques minutes, votre configuration se propage à tous les emplacements périphériques. Le contenu compressible diffusé à partir du backend est compressé avant d'être distribué au client.

Modes de compression

Le mode de compression par défaut est DISABLED.

Le mode AUTOMATIC permet à Cloud CDN de choisir la meilleure méthode de compression en fonction des éléments suivants :

  • Encodage accepté par le client
  • Taux de compression attendu de la réponse
  • Vitesse de compression de Cloud CDN (débit)

Brotli permet d'atteindre 10 à 20 % de réduction en plus par rapport à gzip sur la taille de téléchargement de la plupart des types de contenu, tout en offrant des performances de décompression similaires. Cela le rend donc globalement plus rapide lorsque l'on tient compte du temps de téléchargement et de la vitesse de décompression du client.

Cloud CDN indique la méthode de compression choisie (gzip ou brotli) dans l'en-tête Content-Encoding de la réponse.

Cloud CDN détermine le niveau de compression afin d'équilibrer la taille totale de téléchargement et le coût du processeur sur le client. Des niveaux de compression plus élevés n'entraînent pas toujours de meilleures performances, en particulier sur les appareils mobiles à faible puissance.

Lors de la compression initiale du contenu par Cloud CDN, celui-ci supprime l'en-tête Content-Length de la réponse. Cela est nécessaire pour permettre à la réponse d'être diffusée le plus rapidement possible, car la longueur totale du contenu n'est pas connue tant que la réponse n'a pas été entièrement compressée. Une fois qu'une réponse a été compressée et mise en cache, Cloud CDN peut inclure l'en-tête Content-Length dans les réponses suivantes. (Pour HTTP/1.1 et les versions antérieures, Cloud CDN utilise Transfer-Encoding: chunked dans la réponse lorsqu'il n'utilise pas Content-Length.)

Quand une réponse est-elle compressée ?

Si une requête comporte un en-tête Accept-Encoding qui indique explicitement la prise en charge des algorithmes gzip ou Brotli, les réponses non compressées diffusées à partir du backend (origine) avec un en-tête Content-Type correspondant aux types de contenu compressibles sont en conséquence compressées avec gzip ou Brotli. Si une requête ne comporte pas d'en-tête Accept-Encoding ou si elle comporte un en-tête Accept-Encoding: *, la réponse n'est pas compressée.

Par exemple, pour une requête client présentant un en-tête Accept-Encoding, la réponse est compressée (ou non) en fonction des informations fournies dans le tableau suivant :

En-tête de requête Accept-Encoding Encodage de la réponse
gzip, compress, br Brotli (br)
deflate