La compressione dinamica comprime automaticamente le risposte gestite da Media CDN. Le dimensioni dei dati inviati sulla rete vengono ridotte dal 60% all'85% nei casi tipici.
La riduzione delle dimensioni accelera il download di asset importanti, come fogli di stile (CSS), script (JavaScript) e manifest video (HLS/DASH), il che può ridurre significativamente i tempi di caricamento della pagina e di avvio dei video.
Le playlist (manifest) di video live di grandi dimensioni contengono una quantità significativa di dati e recuperi ripetuti, tra cui l'host e il prefisso del percorso di ogni segmento, nonché i metadati della playlist HLS o DASH. Più velocemente la playlist si carica o gli aggiornamenti della playlist possono essere scaricati, meno tempo un client deve aspettare per analizzare e iniziare a scaricare i segmenti video a cui viene fatto riferimento. Le playlist HLS e DASH spesso subiscono una riduzione delle dimensioni totali superiore al 90%.
Per ulteriori informazioni sui vantaggi della compressione delle risposte, consulta la guida di Web Fundamentals.
Come funziona la compressione dinamica
Quando la compressione dinamica è abilitata, i contenuti comprimibili
pubblicati dall'origine possono essere compressi prima della pubblicazione se il
client accetta uno degli algoritmi di compressione supportati (br
o gzip
).
Media CDN aggiunge un'intestazione Vary: Accept-Encoding
a tutte le risposte idonee alla compressione. Per informazioni correlate, consulta
Contenuti non comprimibili.
Inoltre, se l'intestazione Accept-Encoding
della richiesta indica una preferenza
per i contenuti compressi specificando br
o gzip
(e includendo facoltativamente
un parametro q
diverso da zero), Media CDN esegue le
seguenti operazioni:
Rimuove l'intestazione
Content-Length
dalla risposta. Questa operazione è necessaria per consentire la pubblicazione della risposta il più rapidamente possibile, perché la lunghezza completa dei contenuti è sconosciuta finché l'intera risposta non è stata compressa. Per HTTP/1.1 e versioni precedenti, Media CDN utilizzaTransfer-Encoding: chunked
nella risposta quando non utilizzaContent-Length
.Dopo che una risposta è stata compressa e memorizzata nella cache, Media CDN può includere l'intestazione
Content-Length
nelle risposte successive e impostare il valore sulla lunghezza del contenuto del corpo compresso.Imposta
Accept-Ranges
sunone
. Informa i client che le richieste di intervallo per questa risorsa vengono ignorate.Indebolisce le intestazioni di risposta
ETag
efficaci, come richiesto dalla sezione 8.8.3 dell'RFC 9110. Ad esempio,ETag: "xyzzy"
viene sostituito daETag: W/"xyzzy"
.Imposta l'intestazione
Content-Encoding
subr
ogzip
, che indica l'algoritmo di compressione scelto.Media CDN sceglie l'algoritmo di compressione migliore in base al tasso di compressione previsto della risposta e alla velocità di compressione o al throughput.
La compressione Brotli viene utilizzata se il client la supporta, anche se altri algoritmi di compressione hanno valori
q
più elevati nell'intestazioneAccept-Encoding
.I manifest HLS vengono compressi utilizzando solo
gzip
.
Media CDN determina il livello di compressione per bilanciare le dimensioni totali del download e il costo della CPU sul client. Livelli di compressione più elevati non sempre migliorano le prestazioni, soprattutto sui dispositivi mobili con meno potenza.
Configurare la compressione dinamica
Puoi abilitare la compressione dinamica sulle route che gestiscono le richieste.
Prima di iniziare
Segui questi passaggi:
Identifica o crea un'origine Media CDN con contenuti comprimibili pronti per la pubblicazione.
Identifica o crea un servizio Media CDN con almeno una regola di route.
Attivare la compressione dinamica per una regola di routing
Per impostazione predefinita, la modalità di compressione per una regola di route è disabilitata.
Se imposti la modalità su automatica, la compressione dinamica viene attivata per ogni risposta idonea. Inoltre, indica a Media CDN di scegliere automaticamente l'algoritmo di compressione migliore.
Per attivare la compressione dinamica:
Console
Nella console Google Cloud , vai alla pagina Media CDN.
Per aprire la pagina Dettagli del servizio per il quale vuoi configurare una regola di routing, fai clic sul nome del servizio.
Per passare alla modalità di modifica, fai clic sul pulsante Modifica.
Per passare alla sezione Routing, fai clic su Avanti.
Per modificare una regola host, fai clic sulla freccia per espanderla.
Per modificare una regola di routing, fai clic su
Modifica nella riga corrispondente.Nel riquadro Modifica regola di routing, fai clic su Configurazioni avanzate.
(Facoltativo) In Azione del percorso, aggiungi un elemento Criterio CDN.
Una policy CDN consente a Media CDN di comprimere i contenuti una volta e pubblicarli più volte, risparmiando larghezza di banda e accelerando la distribuzione.
Nella sezione Compressione dinamica, seleziona Attiva compressione.
Per salvare la regola di routing, fai clic su Salva.
Per salvare le modifiche al servizio, fai clic su Aggiorna servizio.
gcloud e YAML
Esporta la configurazione di Media CDN in un file YAML. Utilizza il comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Sostituisci quanto segue:
SERVICE_NAME
: il nome del servizioFILENAME
: il nome del file YAML
Nella definizione della route nel file YAML, in
routeAction
, impostacompressionMode
suAUTOMATIC
, come mostrato nel seguente esempio: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
Per aggiornare il servizio, importa la configurazione di Media CDN dal file YAML. Utilizza il comando
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Terraform
Il seguente snippet Terraform mostra una regola di route con compressione dinamica abilitata.
A breve, la configurazione verrà propagata a tutte le edge location.
Quando la compressione dinamica è abilitata per una route e la nuova configurazione viene applicata alle macchine di produzione, Media CDN inizia a comprimere le risposte idonee, anche se esistono versioni memorizzate nella cache non compresse. Mentre Media CDN recupera e comprime i nuovi contenuti, potrebbe verificarsi un picco temporaneo di traffico verso l'origine.
Disattivare la compressione dinamica per una regola di route
Per disattivare la compressione dinamica:
Console
Nella console Google Cloud , vai alla pagina Media CDN.
Per aprire la pagina Dettagli del servizio per il quale vuoi configurare la regola di routing, fai clic sul nome del servizio.
Per passare alla modalità di modifica, fai clic sul pulsante Modifica.
Per passare alla sezione Routing, fai clic su Avanti.
Per modificare una regola host, fai clic sulla freccia per espanderla.
Per modificare una regola di routing, fai clic su
Modifica nella riga corrispondente.Nel riquadro Modifica regola di routing, fai clic su Configurazioni avanzate.
Nella sezione Compressione dinamica, deseleziona Abilita compressione.
Per salvare la regola di routing, fai clic su Salva.
Per salvare le modifiche al servizio, fai clic su Aggiorna servizio.
gcloud e YAML
Esporta la configurazione di Media CDN in un file YAML. Utilizza il comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Sostituisci quanto segue:
SERVICE_NAME
: il nome del servizioFILENAME
: il nome del file YAML
Nella definizione della route nel file YAML, imposta
compressionMode
suDISABLED
.Per aggiornare il servizio, importa la configurazione di Media CDN dal file YAML. Utilizza il comando
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Se riscontri problemi con la compressione dinamica per un percorso specifico, ad esempio problemi di compatibilità con determinati client (ad esempio smart TV o dispositivi di streaming), per impedire a Media CDN di pubblicare contenuti compressi su quel percorso, disattiva la compressione dinamica.
Se disattivi la compressione dinamica per una route, Media CDN smette di pubblicare i contenuti compressi dalla cache. Tutte le risposte compresse memorizzate precedentemente nella cache diventano non valide e la CDN recupera le versioni non compresse dall'origine.
Tipi di contenuti comprimibili
La compressione dinamica si applica ai seguenti tipi MIME, in base all'intestazione della risposta HTTP Content-Type
. Le risposte che non hanno un'intestazione Content-Type
non vengono compresse.
I tipi di contenuti comuni e i relativi tipi MIME includono:
- Contenuti HTML:
text/html
- Fogli di stile:
text/css
- JavaScript:
application/javascript
- JSON:
application/json
- Playlist HLS:
application/x-mpegURL
oapplication/vnd.apple.mpegURL
- Manifest DASH:
application/dash+xml
La seguente tabella riassume in che modo il tipo MIME influisce sulla comprimibilità.
Tipi MIME comprimibili | |
---|---|
Corrispondenza esatta |
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 |
Corrispondenza di pattern | application/*+json application/*+xml application/*mpegURL text/* |
I formati di immagini e video (ad esempio image/jpeg
, image/png
e video/mpeg4
)
sono quasi sempre già compressi. Pertanto, Media CDN non
li comprime. La ricompressione di una risposta già compressa raramente riduce
le dimensioni del file e i client potrebbero mostrare un comportamento imprevisto quando ricevono una
risposta di questo tipo.
Risposte incomprimibili
Media CDN non comprime una risposta che presenta una o più delle seguenti caratteristiche:
- La risposta non ha un'intestazione
Content-Type
che corrisponde a un tipo di contenuto comprimibile. - La risposta non ha un'intestazione
Content-Length
. - La risposta ha un'intestazione
Content-Encoding
. Ciò implica che l'origine ha già compresso la risposta. Pertanto, Media CDN non deve eseguire alcuna compressione dinamica aggiuntiva. La risposta è inferiore a 1 KiB.
Il tempo impiegato per comprimere e decomprimere spesso compensa eventuali vantaggi. Inoltre, c'è meno contenuto da comprimere, il che può ridurre l'efficacia della compressione e portare a un rapporto di compressione inferiore.
La risposta è maggiore di 1 MiB.
Media CDN comprime le risposte fino alle dimensioni consentite per la memorizzazione nella cache degli oggetti senza la memorizzazione nella cache di intervalli di byte.
La risposta ha un'intestazione
Cache-Control: no-transform
.La risposta ha un'intestazione
Vary: Accept-Encoding
, il che implica che la compressione dinamica non è necessaria perché l'origine può comprimere la risposta.
Logging e monitoraggio
Quando la compressione è attivata, la metrica https/response_bytes_count
esistente
nei report edgecache.googleapis.com/EdgeCacheRouteRule
indica le dimensioni
della risposta compressa. Puoi aspettarti un calo dei byte di risposta totali e
del throughput di trasferimento dei dati in uscita per i contenuti comprimibili.
I log di Media CDN includono un campo compressionAlgorithmApplied
in jsonPayload
, che indica se la risposta è stata compressa dal
bilanciatore del carico e il tipo di compressione.
{ insertId: "1c02hw9g3gjay67" jsonPayload: { @type: "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry", cacheId: "IAD-862d661f", cacheStatus": "hit,stale", compressionAlgorithmApplied: "br" }, }
Fatturazione
Quando una risposta viene compressa da Media CDN, i costi di trasferimento di dati in uscita dalla cache o da internet pertinenti si basano sui byte compressi finali inviati al client.
Se pubblichi una grande quantità di risposte comprimibili, ciò può comportare una riduzione delle tariffe mensili per il trasferimento di dati in uscita, nonché un aumento delle prestazioni per gli utenti finali.