Activer la compression dynamique

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

La réduction de la taille accélère le téléchargement d'éléments importants, tels que les feuilles de style (CSS), les scripts (JavaScript) et les fichiers manifestes vidéo (HLS/DASH), ce qui peut réduire considérablement le temps de chargement des pages et le temps de démarrage des vidéos.

Les grandes playlists vidéo en direct (fichiers manifestes) contiennent une quantité importante de données et d'extractions répétées, y compris le préfixe d'hôte et de chemin d'accès de chaque segment, ainsi que les métadonnées de la playlist HLS ou DASH. Plus le téléchargement de la playlist ou les mises à jour de la playlist 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%.

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

Fonctionnement de la compression dynamique

Lorsque la compression dynamique est activée, le contenu compressible diffusé à partir de l'origine peut être compressé avant d'être diffusé si le client accepte l'un des algorithmes de compression compatibles (br ou gzip).

Media CDN ajoute un en-tête Vary: Accept-Encoding à toutes les réponses pouvant être compressées. Pour en savoir plus, consultez la section Contenu non compressible.

En outre, si l'en-tête Accept-Encoding de la requête indique une préférence pour le contenu compressé en spécifiant br ou gzip (et éventuellement en incluant un paramètre q non nul), Media CDN procède comme suit:

  • Supprime l'en-tête Content-Length de la réponse. Cela est nécessaire pour permettre la diffusion de la réponse aussi rapidement que possible, car la longueur complète du contenu est inconnue tant que la réponse entière n'a pas été compressée. Pour HTTP/1.1 et versions antérieures, Media CDN utilise Transfer-Encoding: chunked dans la réponse lorsqu'il n'utilise pas Content-Length.

    Une fois qu'une réponse a été compressée et mise en cache, Media CDN peut inclure l'en-tête Content-Length dans les réponses suivantes et définir la valeur sur la longueur du contenu du corps compressé.

  • Définit Accept-Ranges sur none. Cela indique aux clients que les requêtes de plage pour cette ressource sont ignorées.

  • Affaiblit tous les en-têtes de réponse ETag forts, conformément à la section 8.8.3 de la RFC 9110. Par exemple, ETag: "xyzzy" est remplacé par ETag: W/"xyzzy".

  • Définit l'en-tête Content-Encoding sur br ou gzip, ce qui indique l'algorithme de compression choisi.

    Media CDN choisit le meilleur algorithme de compression en fonction du taux de compression prévu de la réponse et de la vitesse de compression ou du débit.

    • La compression Brotli est utilisée si le client la prend en charge, même si d'autres algorithmes de compression ont des valeurs q plus élevées dans l'en-tête Accept-Encoding.

    • Les fichiers manifestes HLS ne sont compressés qu'à l'aide de gzip.

    Media CDN détermine le niveau de compression pour é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.

Configurer la décompression dynamique

Vous pouvez activer la compression dynamique sur les routes qui gèrent les requêtes.

Avant de commencer

Procédez comme suit :

Activer la compression dynamique pour une règle de routage

Par défaut, le mode de compression d'une règle de routage est désactivé.

Définir le mode sur "automatique" active la compression dynamique pour chaque réponse éligible. De plus, il demande à Media CDN de choisir automatiquement le meilleur algorithme de compression.

Pour activer la compression dynamique, procédez comme suit:

Console

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

    Accéder à Media CDN

  2. Pour ouvrir la page Détails du service pour lequel vous souhaitez configurer une règle de routage, cliquez sur le nom du service.

  3. Pour passer en mode Édition, cliquez sur le bouton Modifier.

  4. Pour accéder à la section Routing (Routage), cliquez sur Next (Suivant).

  5. Pour modifier une règle d'hôte, cliquez sur la flèche pour la développer.

  6. Pour modifier une règle de routage, cliquez sur Modifier sur la ligne correspondante.

  7. Dans le volet Modifier la règle de routage, cliquez sur Configurations avancées.

  8. Facultatif: Dans Action de routage, ajoutez un élément Règle CDN.

    Une règle CDN permet à Media CDN de compresser le contenu une fois et de le diffuser plusieurs fois, ce qui permet d'économiser de la bande passante et d'accélérer la diffusion.

  9. Dans la section Compression dynamique, sélectionnez Activer la compression.

  10. Pour enregistrer la règle de routage, cliquez sur Enregistrer.

  11. Pour enregistrer vos modifications apportées au service, cliquez sur Mettre à jour le service.

gcloud et YAML

  1. Exportez votre configuration du CDN multimédia dans un fichier YAML. Exécutez la commande gcloud edge-cache services export.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Remplacez les éléments suivants :

    • SERVICE_NAME : nom de votre service.
    • FILENAME : nom de votre fichier YAML
  2. Dans la définition de l'itinéraire dans le fichier YAML, sous routeAction, définissez compressionMode sur AUTOMATIC, comme illustré dans l'exemple suivant:

    routing:
    hostRules:
    - hosts:
      - media.example.com
      pathMatcher: routes
    pathMatchers:
    - name: routes
      routeRules:
        - priority: 2
    origin: origin1
    matchRules:
    - pathTemplateMatch: "/**.m3u8" # HLS playlists
    - pathTemplateMatch: "/**.mpd" # DASH manifests
    routeAction:
      cdnPolicy:
        defaultTtl: 5s
      compressionMode: AUTOMATIC
    
  3. Pour mettre à jour le service, importez votre configuration Media CDN à partir du fichier YAML. Exécutez la commande gcloud edge-cache services import.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

Votre configuration se propage rapidement à tous les emplacements périphériques.

Lorsque la compression dynamique est activée pour un parcours et que la nouvelle configuration prend effet sur les machines de production, Media CDN commence à compresser les réponses éligibles, même si des versions non compressées sont mises en cache. Lorsque le CDN multimédia récupère et compresse de nouveaux contenus, il peut y avoir un pic temporaire du trafic vers votre origine.

Désactiver la compression dynamique pour une règle de routage

Pour désactiver la compression dynamique, procédez comme suit:

Console

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

    Accéder à Media CDN

  2. Pour ouvrir la page Détails du service pour lequel vous souhaitez configurer la règle de routage, cliquez sur le nom du service.

  3. Pour passer en mode Édition, cliquez sur le bouton Modifier.

  4. Pour accéder à la section Routing (Routage), cliquez sur Next (Suivant).

  5. Pour modifier une règle d'hôte, cliquez sur la flèche pour la développer.

  6. Pour modifier une règle de routage, cliquez sur Modifier sur la ligne correspondante.

  7. Dans le volet Modifier la règle de routage, cliquez sur Configurations avancées.

  8. Dans la section Compression dynamique, désélectionnez Activer la compression.

  9. Pour enregistrer la règle de routage, cliquez sur Enregistrer.

  10. Pour enregistrer vos modifications apportées au service, cliquez sur Mettre à jour le service.

gcloud et YAML

  1. Exportez votre configuration du CDN multimédia dans un fichier YAML. Exécutez la commande gcloud edge-cache services export.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Remplacez les éléments suivants :

    • SERVICE_NAME : nom de votre service.
    • FILENAME : nom de votre fichier YAML
  2. Dans la définition de l'itinéraire dans le fichier YAML, définissez compressionMode sur DISABLED.

  3. Pour mettre à jour le service, importez votre configuration Media CDN à partir du fichier YAML. Exécutez la commande gcloud edge-cache services import.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

Si vous rencontrez des problèmes de compression dynamique pour un parcours spécifique, tels que des problèmes de compatibilité avec certains clients (par exemple, des téléviseurs connectés ou des appareils de streaming), désactivez la compression dynamique pour empêcher le CDN multimédia de diffuser du contenu compressé sur ce parcours.

Si vous désactivez la compression dynamique pour une route, Media CDN cesse de diffuser le contenu compressé à partir du cache. Toutes les réponses compressées précédemment mises en cache deviennent non valides, et le CDN extrait des versions non compressées à partir de votre origine.

Types de contenus compressibles

La compression dynamique s'applique aux types MIME suivants, en fonction de l'en-tête de réponse HTTP Content-Type. Les réponses qui n'ont pas d'en-tête Content-Type ne sont pas compressées.

Les types de contenu courants et leurs types MIME sont les suivants :

  • Contenu HTML : text/html
  • Feuilles de style : text/css
  • JavaScript : application/javascript
  • JSON : application/json
  • Playlists HLS : application/x-mpegURL ou application/vnd.apple.mpegURL
  • Fichiers manifestes DASH : application/dash+xml

Le tableau suivant récapitule l'impact du type MIME sur la compression.

  Types MIME compressibles
Correspondance exacte application/csv
application/javascript
application/json
application/json+protobuf
application/signed-exchange
application/wasm
application/x-javascript
application/x-nacl
application/x-plist
application/x-pnacl
application/x-protobuf
application/x-protobuffer
application/x-sdch-dictionary
application/xml
audio/mpegURL
font/eot
font/otf
font/ttf
image/pwg-raster
image/svg+xml
image/vnd.microsoft.icon
image/x-icon
video/vnd.mpeg.dash.mpd
Correspondance de format application/*+json
application/*+xml
application/*mpegURL
text/*

Les formats d'image et de vidéo (tels que image/jpeg, image/png et video/mpeg4) sont presque toujours déjà compressés. Par conséquent, Media CDN ne les compresse pas. La recompression d'une réponse déjà compressée réduit rarement la taille du fichier, et les clients peuvent présenter un comportement inattendu lorsqu'ils reçoivent une réponse de ce type.

Réponses non compressables

Media CDN ne compresse pas une réponse présentant une ou plusieurs des caractéristiques suivantes:

  • La réponse ne comporte pas d'en-tête Content-Type correspondant à un type de contenu compressible.
  • La réponse n'a pas d'en-tête Content-Length.
  • La réponse comporte un en-tête Content-Encoding. Cela implique que l'origine a déjà compressé la réponse. Le CDN multimédia ne doit donc pas effectuer de compression dynamique supplémentaire.
  • La réponse est inférieure à 1 Kio.

    Le temps passé à compresser et à décompresser est souvent compensé par les avantages offerts par ce service. Il y a également moins de contenu à compresser, ce qui peut réduire l'efficacité de la compression et entraîner un taux de compression inférieur.

  • La réponse est supérieure à 1 Mo.

    Media CDN compresse les réponses jusqu'à la taille autorisée pour la mise en cache d'objets sans mise en cache par plage d'octets.

  • La réponse comporte un en-tête Cache-Control: no-transform.

  • La réponse comporte un en-tête Vary: Accept-Encoding, ce qui implique que la compression dynamique n'est pas requise, car l'origine peut compresser la réponse.

Journalisation et surveillance

Lorsque la compression est activée, la métrique https/response_bytes_count existante sous edgecache.googleapis.com/EdgeCacheRouteRule indique la taille de la réponse compressée. Vous devriez constater une baisse du nombre total d'octets de réponse et du débit de transfert de données sortant pour le contenu compressible.

Les journaux Media CDN incluent un champ compressionAlgorithmApplied dans jsonPayload, qui indique si la réponse a été compressée par l'équilibreur de charge, ainsi que le type de compression.

{
  insertId: "1c02hw9g3gjay67"
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
    cacheId: "IAD-862d661f",
    cacheStatus": "hit,stale",
    compressionAlgorithmApplied: "br"
  },
}

Facturation

Lorsqu'une réponse est compressée par Media CDN, les frais de transfert de données Internet ou de cache sortant pertinents sont basés sur les octets compressés finaux envoyés au client.

Si vous diffusez une grande quantité de réponses compressibles, cela peut entraîner une réduction de vos frais de transfert de données sortants mensuels et une augmentation des performances pour les utilisateurs finaux.

Étape suivante