Attiva la compressione dinamica

La compressione dinamica comprime automaticamente le risposte fornite da Cloud CDN. La dimensione dei dati inviati attraverso la rete è ridotta dal 60% all'85% nei casi normali.

La riduzione delle dimensioni riduce il tempo necessario per il download dei contenuti. Per asset importanti come fogli di stile (CSS), script (JavaScript) e manifest video (HLS/DASH), questo può ridurre il caricamento della pagina e i tempi di inizio del video.

Puoi scoprire di più sui vantaggi della compressione delle risposte nella guida Web Fundamentals.

Puoi abilitare la compressione su un servizio di backend o un bucket di backend.

Questa funzionalità è supportata per Cloud CDN con un bilanciatore del carico HTTP(S) esterno globale o un bilanciatore del carico HTTP(S) esterno globale (classico).

Esempi di casi d'uso

La compressione dinamica riduce direttamente le dimensioni dei dati inviati dal perimetro di Cloud CDN al client. Questa operazione può essere eseguita direttamente:

  • Riduci le dimensioni di CSS e JavaScript, velocizzando il rendering delle pagine web e riducendo il tempo a First ContentfulPaint, un'importante metrica relativa alle prestazioni web.
  • Hanno un grande impatto positivo durante la memorizzazione nella cache delle risposte dell'API REST, come i payload JSON. Questi payload si comprimeno bene a causa delle chiavi ripetute, dello spazio vuoto e delle parentesi graffe. La memorizzazione nella cache delle API pubbliche per 5-10 secondi è un approccio comune per ridurre il carico dell'origine mantenendo l'aggiornamento dei dati.

    Anche senza memorizzazione nella cache, la compressione di queste risposte può ridurre i byte totali inviati fino al 90%.

  • Migliora l'ora di inizio della riproduzione del video e la latenza di join per il live streaming. Le playlist dal vivo di grandi dimensioni (manifesti) hanno una quantità significativa di dati ripetuti, inclusi il prefisso host + percorso di ciascun segmento, oltre ai metadati delle playlist HLS o DASH. Più velocemente la playlist viene caricata o gli aggiornamenti delle playlist possono essere scaricati, meno tempo un cliente attende per analizzare e iniziare a scaricare i segmenti video di riferimento. Le playlist HLS e DASH spesso registrano una riduzione totale delle dimensioni di oltre il 90%.

Prima di iniziare

  • Assicurati di aver configurato un backend abilitato per Cloud CDN. Se Cloud CDN non è attualmente configurato, puoi seguire una delle guide alla configurazione.
  • Il tuo backend ha contenuti comprimibili pronti per la pubblicazione, ad esempio asset web o manifest video compresi tra 1 KiB e 10 MiB (inclusi).
  • Assicurati che i client non si basino sul recupero di contenuti parziali con richieste di intervallo o con eTag efficaci. Non sono compatibili con la compressione dinamica.
  • Assicurati che i client possano gestire le risposte senza intestazioni di lunghezza del contenuto. La cache non riesce a rilevare che le compresse di Cloud CDN non hanno intestazioni di lunghezza dei contenuti.
  • Hai il ruolo IAM Amministratore bilanciatore del carico Compute (roles/compute.loadBalancerAdmin), che è necessario per apportare modifiche alla configurazione di backend.

Abilita la compressione su un servizio o un bucket di backend

Per attivare la compressione:

Console

Aggiungere una nuova origine

Per aggiungere una nuova origine:

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

    Vai alle origini Cloud CDN

  2. Fai clic su Aggiungi origine. Viene visualizzata la pagina Nuova origine.

  3. Nella sezione Nozioni di base sull'origine, completa quanto segue:

    1. Nel campo Nome origine, inserisci un nome per l'origine.

      Il nome scelto deve iniziare con una lettera minuscola seguita da un massimo di 62 lettere minuscole, numeri o trattini. Il nome non può terminare con un trattino.

    2. Seleziona una configurazione dell'origine:

      • Bucket di backend: utilizza un bucket Cloud Storage come origine. In Definisci il bucket di backend, seleziona un nuovo bucket Cloud Storage o un bucket Cloud Storage esistente.

      • Origine personalizzata: utilizza un'origine personalizzata. In Definisci l'origine personalizzata, inserisci l'indirizzo IP o il nome di dominio e una porta che Cloud CDN utilizza per connettersi alla tua origine.

      • Servizio di backend: utilizza un bilanciatore del carico configurato come backend. In Definisci il servizio di backend, seleziona il servizio di backend da utilizzare. Se non hai ancora configurato un servizio di backend, puoi crearne uno ora.

    3. Per continuare, fai clic su Avanti.

  4. Nella sezione Regole host e percorso, seleziona una delle seguenti opzioni:

    • Seleziona un bilanciatore del carico esistente: puoi scegliere un bilanciatore del carico esistente dall'elenco Seleziona un bilanciatore del carico.

    • Crea un nuovo bilanciatore del carico per me: Cloud CDN può creare un nuovo bilanciatore del carico per te. Nel campo Nome bilanciatore del carico, inserisci un nome per il nuovo bilanciatore del carico.

      Il nome deve iniziare con una lettera minuscola seguita da un numero massimo di 62 lettere minuscole, numeri o trattini. Il nome non può terminare con un trattino.

  5. Per continuare, fai clic su Avanti.

  6. Nella sezione Opzioni di base, segui questi passaggi.

    1. Per la modalità cache, seleziona una delle seguenti opzioni:

      • Memorizza nella cache il contenuto statico: consigliamo questa impostazione per la maggior parte delle situazioni.

      • Utilizza le impostazioni dell'origine in base alle intestazioni Cache-Control: Cloud CDN memorizza nella cache le risposte con istruzioni di controllo valide nelle intestazioni delle risposte, come Cache-Control: public, max_age=3600.

      • Forza memorizzazione nella cache di tutti i contenuti: questa operazione forza la memorizzazione nella cache di tutti i contenuti da parte di Cloud CDN, ignorando eventuali istruzioni private, no-store o no-cache.

    2. Per Memorizza nella cache il contenuto statico e Forza memorizzazione nella cache di tutti i contenuti, puoi impostare quanto segue:

      • Durata del client: consente di impostare una durata minore per browser o client e far eseguire ai client una nuova convalida a Cloud CDN più regolarmente.

        Il valore della durata client non può essere maggiore del valore della durata massima, ma può essere uguale.

      • Durata predefinita: specifica la durata predefinita dei contenuti memorizzati nella cache forniti da questa origine per le risposte che non hanno ancora una durata valida.

        Il valore della durata predefinita non può essere impostato su un valore maggiore del valore della durata massima, ma può essere uguale.

    3. In Memorizza contenuti statici nella cache, seleziona Durata massima.

      Durata massima ti consente di impostare la durata massima per i contenuti memorizzati nella cache forniti da questa origine.

    4. Per Chiavi cache, seleziona una delle seguenti opzioni dall'elenco Chiave cache:

      • Predefinito: include i parametri di ricerca noti a Cloud Storage.

      • Personalizzato: seleziona i componenti della chiave cache, come la stringa di query o le intestazioni HTTP, utilizzati da Cloud CDN per distinguere le voci della cache.

    5. In Opzioni avanzate, completa i seguenti passaggi:

      1. Seleziona una modalità di compressione nell'elenco Modalità di compressione.

        Per attivare la compressione dinamica, seleziona Automatica.

      2. In Pubblica quando inattivo, seleziona un periodo di tempo in cui Cloud CDN continua a gestire i contenuti inattivi in caso di errore della cache o di origine.

    6. In Contenuti con limitazioni, seleziona una delle seguenti opzioni:

      • Consenti accesso pubblico ai miei contenuti memorizzati nella cache da Cloud CDN: consigliamo questa impostazione per la maggior parte delle situazioni.

      • Limita l'accesso utilizzando gli URL firmati e i cookie firmati: ti consente di limitare l'accesso ai visualizzatori autorizzati. Fornisci un URL o un cookie a tempo limitato che concede agli utenti l'accesso per un periodo di tempo limitato. Per scoprire di più, consulta gli articoli Utilizzare gli URL firmati e Utilizzare i cookie firmati.

    7. (Facoltativo) Aggiungi intestazioni di risposta personalizzate. Per ulteriori informazioni, consulta la pagina Creare intestazioni personalizzate nei servizi di backend.

    8. (Facoltativo) Attiva la memorizzazione nella cache negativa. Per maggiori informazioni, consulta la pagina Utilizzare la memorizzazione nella cache negativa.

    9. Facoltativo: aggiungi intestazioni specifiche che, se presenti, ignorino la cache. Per maggiori informazioni, consulta la pagina Ignorare la cache.

  7. Per creare l'origine, fai clic su Fine.

Modificare un'origine esistente

Per modificare un'origine Cloud CDN esistente:

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

    Vai alle origini Cloud CDN

  2. Fai clic sul nome dell'origine da modificare e poi su Modifica.

  3. Nella sezione Nozioni di base sull'origine, fai clic su Avanti.

  4. Nella sezione Regole host e percorso, fai clic su Avanti.

  5. Nella sezione Prestazioni della cache, vai a Opzioni avanzate.

  6. Nell'elenco Modalità di compressione, seleziona Automatico.

  7. Per applicare le modifiche, fai clic su Fine.

gcloud

Per i servizi di backend, utilizza il comando gcloud compute backend-services create o gcloud compute backend-services update con il flag --compression-mode.

Per i bucket di backend, utilizza il comando gcloud compute backend-buckets create o il comando gcloud compute backend-buckets update con il flag --compression-mode.

Per un nuovo servizio di backend, utilizza il comando create:

gcloud compute backend-services create BACKEND_SERVICE_NAME \
    --compression-mode=AUTOMATIC

Per un servizio di backend esistente, utilizza il comando update:

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --compression-mode=AUTOMATIC

Per un nuovo bucket di backend, utilizza il comando create:

gcloud compute backend-buckets create BACKEND_BUCKET_NAME
    --compression-mode=AUTOMATIC

Per un bucket di backend esistente, utilizza il comando update:

gcloud compute backend-buckets update BACKEND_BUCKET_NAME
    --compression-mode=AUTOMATIC

compression-mode può essere uno dei seguenti:

  • AUTOMATIC: utilizza automaticamente la migliore compressione in base all'intestazione Accept-Encoding inviata dal client. Nella maggior parte dei casi, viene favorita la compressione Brotli.
  • DISABLED (valore predefinito): disattiva la compressione.

API

Per i servizi di backend, utilizza la chiamata API Method: backendServices.insert o Method: backendServices.update.

Per i bucket di backend, utilizza la chiamata API Method: backendBuckets.insert o Method: backendBuckets.update.

Utilizza una delle seguenti chiamate API:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET

Aggiungi il seguente snippet al corpo della richiesta JSON:

"compressionMode": AUTOMATIC

compression-mode può essere uno dei seguenti:

  • AUTOMATIC (consigliato): utilizza automaticamente la migliore compressione in base all'intestazione Accept-Encoding inviata dal client. Nella maggior parte dei casi, viene favorita la compressione Brotli.
  • DISABLED (valore predefinito): disattiva la compressione.

In pochi minuti, la configurazione viene propagata a tutte le località perimetrali. I contenuti comprimibili pubblicati dal backend vengono compressi prima di essere inviati al client.

Modalità di compressione

La modalità di compressione predefinita è DISABLED. Solo i backend con loadBalancingScheme EXTERNAL possono configurare una modalità di compressione diversa da DISABLED.

La modalità AUTOMATIC consente a Cloud CDN di scegliere il miglior metodo di compressione in base a quanto segue:

  • La codifica accettata del client
  • Il rapporto di compressione previsto della risposta
  • Velocità di compressione di Cloud CDN (velocità effettiva)

Brotli può produrre un'ulteriore riduzione delle dimensioni di download dal 10% al 20% per la maggior parte dei tipi di contenuti rispetto a Gzip, con prestazioni di decompressione simili, rendendola più veloce complessivamente considerando il tempo di download e la velocità di decompressione sul client.

Cloud CDN determina il livello di compressione per bilanciare le dimensioni di download totali e i costi di CPU sul client. Livelli di compressione più elevati non sempre giovano alle prestazioni, soprattutto sui dispositivi mobili con prestazioni inferiori.

Quando viene compressa una risposta?

Se una richiesta ha un'intestazione Accept-Encoding che elenca esplicitamente il supporto per gli algoritmi gzip o Brotli, le risposte non compresse pubblicate dal backend (origine) con un'intestazione Content-Type che corrisponde ai tipi di contenuti comprimibili vengono compresse di conseguenza con gzip o Brotli. Se una richiesta non ha intestazione Accept-Encoding o se ha Accept-Encoding: *, la risposta non viene compressa.

Ad esempio, data un'intestazione Accept-Encoding in una richiesta client, la risposta viene compressa (o meno) in base alle informazioni nella seguente tabella:

Intestazione della richiesta Accept-Codifica Codifica delle risposte
gzip, compress, br Brotli (br)
deflate Non compresso
deflate, gzip Gzip
identity Non compresso
* Non compresso

Tipi di contenuti comprimibili

La compressione dinamica si applica ai seguenti tipi MIME, in base all'intestazione della risposta HTTP Content-Type. Le risposte senza intestazione della risposta Content-Type non sono compresse.

I tipi di contenuti più comuni e i 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
  • File manifest DASH: application/dash+xml

La tabella seguente riepiloga l'impatto della comprimibilità sul tipo MIME.

  Tipi MIME comprimibili
Corrispondenza esatta <ph type="x-smartling-void-element"><br /></ph>
























Corrispondenza di schema applicazione/*+json
applicazione/*+xml
applicazione/*mpegURL
testo/*

I formati di immagine e video (come image/jpeg, image/png e video/mpeg4) sono quasi sempre compressi, quindi Cloud CDN non li comprime. La nuova compressione di una risposta già compressa riduce raramente le dimensioni del file e i client potrebbero mostrare comportamenti imprevisti durante la ricezione di una risposta di questo tipo.

Quando una risposta non viene compressa?

La compressione dinamica non comprime una risposta con una o più delle seguenti caratteristiche:

  • La risposta non ha un'intestazione Content-Type che corrisponde a un tipo di contenuti comprimibili.
  • Non ha un'intestazione Content-Length.
  • È inferiore a 1 KiB.

    Il tempo dedicato alla compressione e alla decompressione spesso compensa ogni beneficio. Ci sono anche meno contenuti da comprimere, il che può ridurre l'efficacia della compressione e portare a un tasso di compressione più basso.

  • Supera 10 MiB.

  • Ha un'intestazione Cache-Control: no-transform.

  • Ha un'intestazione Vary: Accept-Encoding.

Richieste intervallo

Quando Cloud CDN comprime una risposta, Cloud CDN aggiunge un'intestazione Accept-Ranges: none e sostituisce tutte le intestazioni Accept-Ranges esistenti. Gli hit della cache per queste risposte ignorano le intestazioni Range.

Ciò impedisce la pubblicazione di contenuti parziali errati ai client perché non è possibile garantire che un client si aspetti un intervallo di byte dalla forma compressa o non compressa di una risorsa.

ETag

Quando la compressione dinamica comprime una risposta, tutte le intestazioni ETag efficaci vengono invase, come richiesto dalla sezione RFC 7232 2.3. Ad esempio, ETag: "xyzzy" viene sostituito con ETag: W/"xyzzy".

Intestazione Varia

Quando pubblichi una risposta che potrebbe essere compressa (a seconda della richiesta), Cloud CDN aggiunge l'intestazione Vary: Accept-Encoding alla risposta.

Logging

I log di Cloud CDN e del bilanciatore del carico HTTP(S) esterno includono un campo compressionStatus in jsonPayload che indica se la risposta è stata compressa dal bilanciatore del carico e dal tipo di compressione.

{
  insertId: "1c02hw9g3gjay67"
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
    statusDetails: "response_sent_by_backend"
    cacheId: "IAD-862d661f"
    compressionStatus: "br"
  }
}

Fatturazione

Quando una risposta viene compressa da Cloud CDN o Cloud Load Balancing, il traffico in uscita dalla cache o il traffico in uscita da Internet (rispettivamente) pertinente viene misurato in base ai byte compressi finali inviati al client.

Se gestisci una grande quantità di risposte comprimibili, ciò può comportare una riduzione delle tariffe mensili per il traffico in uscita, nonché un aumento del rendimento per gli utenti finali.

Metriche

Se la compressione è attivata, la metrica esistente https/response_bytes_count in loadbalancing.googleapis.com indica le dimensioni della risposta compressa.

Dovresti aspettarti un calo dei byte di risposta totali (e della velocità effettiva di traffico in uscita).

Se pubblichi una grande quantità di contenuti basati sul testo che si adattano bene, ad esempio HTML, CSS, JavaScript o JSON, potresti notare un forte calo dei byte di risposta.

Per ulteriori informazioni, consulta Monitoraggio.

Passaggi successivi