Abilita compressione dinamica

La compressione dinamica comprime automaticamente le risposte fornite 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 pagina e di avvio del video.

Le playlist di video in diretta (manifest) di grandi dimensioni contengono una quantità significativa di dati e recuperi ripetuti, tra cui il prefisso host e percorso di ogni segmento, nonché i metadati della playlist HLS o DASH. Più rapido è il tempo di caricamento della playlist o di download degli aggiornamenti della playlist, minore sarà il tempo atteso da un client 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 di oltre il 90%.

Per saperne di più sui vantaggi della compressione delle risposte, consulta la guida Web Fundamentals.

Come funziona la compressione dinamica

Quando la compressione dinamica è abilitata, i contenuti comprimibili forniti dall'origine possono essere compressi prima di essere forniti 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 non è nota finché l'intera risposta non è stata compressa. Per HTTP/1.1 e versioni precedenti, Media CDN utilizza Transfer-Encoding: chunked nella risposta quando non utilizza Content-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 corpo dei contenuti compressi.

  • Imposta Accept-Ranges su none. In questo modo i client vengono informati che le richieste di intervallo per questa risorsa vengono ignorate.

  • Rende deboli tutte le intestates di risposta forti ETag, come richiesto da RFC 9110, sezione 8.8.3. Ad esempio, ETag: "xyzzy" viene sostituito con ETag: W/"xyzzy".

  • Imposta l'intestazione Content-Encoding su br o gzip, che indica l'algoritmo di compressione scelto.

    Media CDN sceglie l'algoritmo di compressione migliore in base al rapporto di compressione previsto della risposta e alla velocità o al throughput di compressione.

    • La compressione Brotli viene utilizzata se il client la supporta, anche se altri algoritmi di compressione hanno valori q più elevati nell'intestazione Accept-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 meno potenti.

Configurare la compressione dinamica

Puoi abilitare la compressione dinamica sulle route che gestiscono le richieste.

Prima di iniziare

Segui questi passaggi:

Abilitare la compressione dinamica per una regola di route

Per impostazione predefinita, la modalità di compressione per una regola di route è disabilitata.

Se imposti la modalità su automatica, la compressione dinamica viene abilitata per ogni risposta idonea. Inoltre, Media CDN viene istruito a scegliere automaticamente l'algoritmo di compressione migliore.

Per abilitare la compressione dinamica:

Console

  1. Nella Google Cloud console, vai alla pagina Media CDN.

    Vai a Media CDN

  2. Per aprire la pagina Dettagli del servizio per cui vuoi configurare una regola di route, fai clic sul nome del servizio.

  3. Per passare alla modalità di modifica, fai clic sul pulsante Modifica.

  4. Per accedere alla sezione Routing, fai clic su Avanti.

  5. Per modificare una regola host, fai clic sulla freccia per espanderla.

  6. Per modificare una regola di route, fai clic su Modifica nella riga corrispondente.

  7. Nel riquadro Modifica regola di route, fai clic su Configurazioni avanzate.

  8. (Facoltativo) Per Azione route, aggiungi un elemento della policy 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.

  9. Nella sezione Compressione dinamica, seleziona Abilita compressione.

  10. Per salvare la regola di route, fai clic su Salva.

  11. Per salvare le modifiche al servizio, fai clic su Aggiorna servizio.

gcloud e YAML

  1. Esporta la configurazione di Media CDN in un file YAML. Utilizza il gcloud edge-cache services export comando.

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

    Sostituisci quanto segue:

    • SERVICE_NAME: il nome del servizio
    • FILENAME : il nome del file YAML
  2. Nella definizione della route nel file YAML, in routeAction, imposta compressionMode su AUTOMATIC, 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
    
  3. Per aggiornare il servizio, importa la configurazione di Media CDN dal file YAML. Utilizza il gcloud edge-cache services import comando.

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

Terraform

Il seguente snippet Terraform mostra una regola di route con la compressione dinamica abilitata.

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}"
    }
  }
}

La configurazione viene propagata a tutte le località perimetrali a breve.

Quando la compressione dinamica è abilitata per una route e la nuova configurazione entra in vigore nelle macchine di produzione, Media CDN inizia a comprimere le risposte idonee, anche se esistono versioni memorizzate nella cache non compresse. Durante il recupero e la compressione di nuovi contenuti da parte di Media CDN, potrebbe verificarsi un picco temporaneo del traffico verso l'origine.

Disabilitare la compressione dinamica per una regola di route

Per disabilitare la compressione dinamica:

Console

  1. Nella Google Cloud console, vai alla pagina Media CDN.

    Vai a Media CDN

  2. Per aprire la pagina Dettagli del servizio per cui vuoi configurare la regola di route, fai clic sul nome del servizio.

  3. Per passare alla modalità di modifica, fai clic sul pulsante Modifica.

  4. Per accedere alla sezione Routing, fai clic su Avanti.

  5. Per modificare una regola host, fai clic sulla freccia per espanderla.

  6. Per modificare una regola di route, fai clic su Modifica nella riga corrispondente.

  7. Nel riquadro Modifica regola di route, fai clic su Configurazioni avanzate.

  8. Nella sezione Compressione dinamica, deseleziona Abilita compressione.

  9. Per salvare la regola di route, fai clic su Salva.

  10. Per salvare le modifiche al servizio, fai clic su Aggiorna servizio.

gcloud e YAML

  1. Esporta la configurazione di Media CDN in un file YAML. Utilizza il gcloud edge-cache services export comando.

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

    Sostituisci quanto segue:

    • SERVICE_NAME: il nome del servizio
    • FILENAME : il nome del file YAML
  2. Nella definizione della route nel file YAML, imposta compressionMode su DISABLED.

  3. Per aggiornare il servizio, importa la configurazione di Media CDN dal file YAML. Utilizza il gcloud edge-cache services import comando.

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

Se riscontri problemi con la compressione dinamica per una route specifica, ad esempio problemi di compatibilità con determinati client (ad es. smart TV o dispositivi di streaming), per impedire a Media CDN di pubblicare contenuti compressi su quella route, disabilita la compressione dinamica.

La disattivazione della compressione dinamica per una route fa sì che Media CDN smetta di pubblicare contenuti compressi dalla cache. Tutte le risposte compresse memorizzate nella cache in precedenza 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 o application/vnd.apple.mpegURL
  • Manifest DASH: application/dash+xml

La seguente tabella riassume l'influenza dei diversi tipi MIME 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 pattern application/*+json
application/*+xml
application/*mpegURL
text/*

I formati immagine e video (come 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 non comprimibili

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 la compressione e la decompressione spesso vanifica gli eventuali vantaggi. Inoltre, ci sono meno contenuti 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 gli oggetti di memorizzazione nella cache senza memorizzazione nella cache di intervalli di byte.

  • La risposta ha un'intestazione Cache-Control: no-transform.

Logging e monitoraggio

Quando la compressione è attiva, la metrica esistente https/response_bytes_count in edgecache.googleapis.com/EdgeCacheRouteRule indica le dimensioni della risposta compressa. Puoi aspettarti una riduzione 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, gli addebiti per il trasferimento di dati in uscita dalla cache o su internet pertinenti si basano sui byte compressi finali inviati al client.

Se gestisci 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.

Passaggi successivi