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 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 suivantes 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
forts, 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 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êteAccept-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 :
Identifiez ou créez une origine Media CDN avec un contenu compressable 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 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
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 de routage, cliquez sur le nom du service.
Pour passer en mode Édition, cliquez sur le bouton Modifier.
Pour accéder à la section Routing (Routage), cliquez sur Next (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: 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.
Dans la section Compression dynamique, sélectionnez Activer la compression.
Pour enregistrer la règle de routage, cliquez sur Enregistrer.
Pour enregistrer vos modifications apportées au service, cliquez sur Mettre à jour le service.
gcloud et YAML
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
Dans la définition de l'itinéraire dans le fichier YAML, sous
routeAction
, définissezcompressionMode
surAUTOMATIC
, 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
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
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 de routage, cliquez sur le nom du service.
Pour passer en mode Édition, cliquez sur le bouton Modifier.
Pour accéder à la section Routing (Routage), cliquez sur Next (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ésélectionnez Activer la compression.
Pour enregistrer la règle de routage, cliquez sur Enregistrer.
Pour enregistrer vos modifications apportées au service, cliquez sur Mettre à jour le service.
gcloud et YAML
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
Dans la définition de l'itinéraire dans le fichier YAML, définissez
compressionMode
surDISABLED
.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
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. 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.