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 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 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. Cette opération est nécessaire pour permettre à la réponse d'être diffusée le plus rapidement possible, car la longueur totale du contenu n'est connue qu'une fois la réponse entièrement compressée. Pour HTTP/1.1 et les versions antérieures, Media CDN utiliseTransfer-Encoding: chunked
dans la réponse lorsqu'il n'utilise pasContent-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 ultérieures et définir la valeur sur la longueur du contenu du corps compressé.Définit
Accept-Ranges
surnone
. 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é parETag: W/"xyzzy"
.Définit l'en-tête
Content-Encoding
surbr
ougzip
, 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êteAccept-Encoding
.Les fichiers manifestes HLS ne sont compressés qu'avec
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 compression dynamique
Vous pouvez activer la compression dynamique sur les routes qui traitent les requêtes.
Avant de commencer
Procédez comme suit :
Identifiez ou créez une origine Media CDN avec du contenu compressible prêt à être diffusé.
Identifiez ou créez un service Media CDN avec au moins une règle de routage.
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
Dans la console Google Cloud , accédez à la page Media CDN.
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.
Pour passer en mode Édition, cliquez sur le bouton Modifier.
Pour accéder à la section Routage, cliquez sur Suivant.
Pour modifier une règle d'hôte, cliquez sur la flèche pour la développer.
Pour modifier une règle de routage, cliquez sur
Modifier sur la ligne correspondante.Dans le volet Modifier la règle de routage, cliquez sur Configurations avancées.
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.
Dans la section Compression dynamique, sélectionnez Activer la compression.
Pour enregistrer la règle d'itinéraire, cliquez sur Enregistrer.
Pour enregistrer vos modifications apportées au service, cliquez sur Mettre à jour le service.
gcloud et YAML
Exportez votre configuration Media CDN dans un fichier YAML. Utilisez 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
Dans la définition de route du fichier YAML, sous
routeAction
, définissezcompressionMode
surAUTOMATIC
, 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
Pour mettre à jour le service, importez votre configuration Media CDN à partir du fichier YAML. Utilisez la commande
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Terraform
L'extrait Terraform suivant montre une règle de routage avec la compression dynamique activée.
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 s'il existe des versions mises en cache non compressées. 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
Dans la console Google Cloud , accédez à la page Media CDN.
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.
Pour passer en mode Édition, cliquez sur le bouton Modifier.
Pour accéder à la section Routage, cliquez sur Suivant.
Pour modifier une règle d'hôte, cliquez sur la flèche pour la développer.
Pour modifier une règle de routage, cliquez sur
Modifier sur la ligne correspondante.Dans le volet Modifier la règle de routage, cliquez sur Configurations avancées.
Dans la section Compression dynamique, décochez Activer la compression.
Pour enregistrer la règle d'itinéraire, cliquez sur Enregistrer.
Pour enregistrer vos modifications apportées au service, cliquez sur Mettre à jour le service.
gcloud et YAML
Exportez votre configuration Media CDN dans un fichier YAML. Utilisez 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
Dans la définition de l'itinéraire du fichier YAML, définissez
compressionMode
surDISABLED
.Pour mettre à jour le service, importez votre configuration Media CDN à partir du fichier YAML. Utilisez 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 une route, 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 depuis votre serveur d'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
ouapplication/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. Media CDN ne les compresse donc 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 incompressibles
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 ne comporte 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. Media CDN ne doit donc pas effectuer de compression dynamique supplémentaire. La taille de 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 Mio.
Media CDN compresse les réponses jusqu'à la taille autorisée pour la mise en cache des 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 sortantes 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 sortantes du cache ou d'Internet applicables 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 sortantes mensuels et une augmentation des performances pour les utilisateurs finaux.