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 des é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 de récupérations 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 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 des fondamentaux du Web.

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 distribué 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 éligibles à la compression. Pour en savoir plus, consultez Contenu incompressible.

De plus, 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 en incluant éventuellement un paramètre q non nul), Media CDN effectue les opérations suivantes :

  • 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. Pour HTTP/1.1 et les 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 fortes, 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 attendu de la réponse, ainsi que de la vitesse ou du débit de compression.

    • 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 sont compressés à l'aide de gzip uniquement.

    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 compression dynamique

Vous pouvez activer la compression dynamique sur les routes qui traitent les requêtes.

Avant de commencer

Procédez comme suit :

Activer la compression dynamique pour une règle de route

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

Si vous définissez le mode sur "automatique", la compression dynamique est activée pour chaque réponse éligible. Il indique également à 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 d'itinéraire, cliquez sur le nom du service.

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

  4. Pour accéder à la section Routage, cliquez sur 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 : Pour 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 Media CDN 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 route du fichier YAML, sous routeAction, définissez compressionMode sur AUTOMATIC, comme indiqué 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
    

Terraform

L'extrait de code Terraform suivant montre une règle de routage avec la compression dynamique activée.

route_rule {
  description = "a route rule with dynamic compression, priority=2 (high)"
  priority    = 2
  match_rule {
    path_template_match = "/**.m3u8" # HLS playlists
  }
  match_rule {
    path_template_match = "/**.mpd" # DASH manifests
  }
  origin = google_network_services_edge_cache_origin.default.name
  route_action {
    cdn_policy {
      cache_mode = "FORCE_CACHE_ALL"
      client_ttl = "300s"
    }
    compression_mode = "AUTOMATIC"
  }
  header_action {
    response_header_to_add {
      header_name  = "x-cache-status"
      header_value = "{cdn_cache_status}"
    }
  }
}

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

Lorsque la compression dynamique est activée pour une route 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 mises en cache non compressées existent. Lorsque Media CDN récupère et compresse de nouveaux contenus, il peut y avoir un pic temporaire de trafic vers votre origine.

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

Pour désactiver la compression dynamique :

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 d'itinéraire, cliquez sur le nom du service.

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

  4. Pour accéder à la section Routage, cliquez sur 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écochez 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 Media CDN 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 la route 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 itinéraire 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 Media CDN de diffuser du contenu compressé sur cet itinéraire.

Si vous désactivez la compression dynamique pour un itinéraire, Media CDN cesse de diffuser le contenu compressé à partir du cache. Toutes les réponses compressées mises en cache précédemment ne sont plus valides, et le CDN récupère les versions non compressées 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 les types MIME correspondants 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 compressibilité.

  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 schéma application/*+json