Questa pagina fornisce le best practice per ottimizzare e accelerare la distribuzione dei contenuti con Cloud CDN. Le sezioni sono suddivise in diverse aree chiave.
Cloud CDN utilizza un bilanciatore del carico delle applicazioni esterno come origine per i contenuti memorizzabili nella cache. Un bilanciatore del carico delle applicazioni esterno può fornire agli utenti un mix di contenuti statici e creati dinamicamente tramite un indirizzo IP globale dai seguenti tipi di backend:
- Gruppi di istanze
- Gruppi di endpoint di rete (NEG) a livello di zona
- NEG serverless: uno o più servizi App Engine, Cloud Run o Cloud Run Functions
- NEG internet per backend esterni
- Bucket in Cloud Storage
Grazie all'integrazione perfetta con Google Cloud, hai diverse opzioni per il deployment di Cloud CDN e la gestione dei contenuti. Utilizza le best practice qui elencate per pianificare e perfezionare il deployment. Per saperne di più, consulta Configura Cloud CDN.
Ottimizza la percentuale successi cache
Le seguenti pratiche consigliate aiutano a ottimizzare la percentuale successi cache.
Memorizza contenuto statico nella cache
Come best practice per migliorare le prestazioni, quando abiliti Cloud CDN devi scegliere la modalità cache corretta per la tua applicazione.
Il metodo più flessibile e generalmente preferito per gestire le regole della cache consiste nell'utilizzare l'intestazione cache-control. Se non hai familiarità con l'utilizzo delle intestazioni cache-control dell'origine, la best practice consigliata è consentire a Cloud CDN di memorizzare automaticamente nella cache i contenuti statici.
Per memorizzare automaticamente nella cache le risposte statiche dall'origine, puoi utilizzare l'impostazione --cache-mode=CACHE_ALL_STATIC (valore predefinito). Questa impostazione consente a Cloud CDN di memorizzare nella cache i tipi di contenuti statici comuni quando l'origine non specifica istruzioni di memorizzazione nella cache nelle intestazioni della risposta. Assicurati che i tuoi contenuti corrispondano alle categorie indicate, altrimenti non verranno memorizzati nella cache.
Non memorizzare nella cache contenuti specifici per l'utente
In alcuni casi, i browser possono memorizzare nella cache contenuti specifici per l'utente. Non utilizzare Cloud CDN per memorizzare nella cache contenuti specifici per l'utente.
Utilizza chiavi cache personalizzate per migliorare la percentuale successi cache
Per prestazioni e scalabilità, è importante ottimizzare la percentuale successi cache. Per impostazione predefinita, Cloud CDN utilizza l'URL della richiesta completo per creare la chiave cache. Per ottimizzare la percentuale successi cache, puoi utilizzare chiavi cache personalizzate in modo che Cloud CDN non frammenti inutilmente la cache.
Le chiavi cache personalizzate ti consentono di includere o omettere qualsiasi combinazione di protocollo, host e stringa di query. Di seguito sono riportati alcuni esempi di casi in cui potresti utilizzare chiavi cache personalizzate:
Hai due host che vengono risolti nello stesso indirizzo IP e puntano allo stesso servizio. In questo esempio, l'intero sito web è lo stesso sui due host. Per impostazione predefinita, Cloud CDN memorizza nella cache due copie a causa della diversa intestazione
Host:nelle richieste HTTP. Con una chiave cache personalizzata, puoi fare in modo che Cloud CDN ignori la parte host della richiesta e condivida le voci di cache.In un esempio più specifico, potresti avere due siti web su domini diversi che utilizzano lo stesso logo. I contenuti dei siti web sono diversi, ma utilizzi lo stesso logo aziendale su entrambi i domini e hai un servizio di backend dedicato che contiene i contenuti condivisi. Quando abiliti Cloud CDN e personalizzi le chiavi cache per il servizio di backend che contiene il logo, deseleziona la casella di controllo Host in modo che la cache ignori il dominio, ma memorizzi nella cache il logo.
Un logo deve essere memorizzato nella cache, indipendentemente dal fatto che venga visualizzato tramite HTTP o HTTPS. Quando personalizzi le chiavi cache per il servizio di backend che contiene il logo, deseleziona la casella di controllo Protocollo in modo che le richieste tramite HTTP e HTTPS vengano conteggiate come corrispondenze per la voce della cache del logo.
Per scoprire come personalizzare le chiavi cache, consulta Utilizzo delle chiavi cache.
Ottimizza le prestazioni
Le seguenti pratiche consigliate contribuiscono a ottimizzare le prestazioni.
Assicurati che sia abilitato il supporto dei protocolli HTTP/3 e QUIC
HTTP/3 è un protocollo internet di nuova generazione. Si basa su QUIC, un protocollo sviluppato a partire dal protocollo Google QUIC (gQUIC) originale. HTTP/3 è supportato tra il bilanciatore del carico HTTP(S) esterno, Cloud CDN e i client.
Per aumentare le prestazioni con Cloud CDN, assicurati che HTTP/3 sia abilitato.
Utilizza la memorizzazione nella cache negativa
La memorizzazione nella cache negativa offre un controllo granulare sulla memorizzazione nella cache per errori comuni o reindirizzamenti. Quando Cloud CDN rileva codici di risposta specifici, mantiene la risposta nella cache per un TTL impostato. Ciò può ridurre il carico sulle origini e migliorare l'esperienza dell'utente finale riducendo la latenza di risposta.
Abilita TLS Early Data
L'utilizzo di TLS Early Data
migliora il tasso di connessioni riprese del 30-50%. Per abilitare TLS Early Data, utilizza il comando gcloud compute target-https-proxies update con l'opzione tls-early-data. Per saperne di più, consulta Configura TLS Early Data.
Puoi abilitare TLS Early Data in modalità STRICT o PERMISSIVE.
STRICT: abilita Early Data per i metodi idempotenti (GET,HEAD,OPTIONSeTRACE), che non hanno altri parametri di query. Questo è il metodo più sicuro e applicabile nella maggior parte dei casi.PERMISSIVE: abilita Early Data per i metodi idempotenti che possono includere parametri di query. Quando utilizzi questa modalità, devi monitorare attentamente il comportamento e la security posture della tua applicazione.
Le richieste Early Data che utilizzano metodi HTTP non idempotenti o che hanno parametri di query vengono rifiutate con un codice di stato HTTP 425.
Ottimizza la sicurezza
Le seguenti pratiche consigliate contribuiscono a ottimizzare la sicurezza.
Utilizza Google Cloud Armor
Cloud Armor si integra con Cloud CDN sia per i contenuti memorizzati nella cache sia per quelli non memorizzati nella cache o con fallimento della cache. Una best practice consigliata è utilizzare Cloud Armor insieme a Cloud CDN, ove possibile, per aumentare la sicurezza delle applicazioni web.
Utilizza gli URL firmati
Se utilizzi URL firmati, tieni presente quanto segue:
Mantieni i contenuti pubblici e privati in bucket Cloud Storage separati.
Segui le best practice per la sicurezza.
Autentica le origini private
L'autenticazione dell'origine offre una forte garanzia che la richiesta provenga solo dal servizio di backend configurato. Offre inoltre la protezione dei dati in transito per la richiesta e protegge dal riutilizzo della parte firmata della richiesta.
Ti consigliamo di utilizzare l'autenticazione dell'origine privata per i bucket Amazon S3 o gli archivi di oggetti compatibili. L'autenticazione dell'origine privata contribuisce a garantire che solo le connessioni attendibili accedano ai contenuti delle tue origini private e che gli utenti non vi accedano direttamente.
Inoltre, se i firewall dell'origine impediscono l'accesso all'origine, inserisci gli IP nella lista consentita per assicurarti che una richiesta provenga da Cloud CDN o dal bilanciatore del carico delle applicazioni esterno. Tuttavia, ciò non impedisce ad altri clienti di Media CDN di tentare di accedere ai tuoi contenuti specificando l'origine nella loro configurazione.
Ottimizza la cache
Le seguenti pratiche consigliate aiutano a ottimizzare la cache.
Ottimizza i TTL della cache
Puoi impostare o sostituire i TTL per perfezionare il periodo di tempo in cui Cloud CDN memorizza nella cache le risposte e il momento in cui ne ripete la convalida.
Puoi anche definire un TTL lato client per sfruttare al meglio le cache dei browser.
Per saperne di più, consulta Utilizzo delle impostazioni e degli override TTL.
Imposta la scadenza per i contenuti sensibili al fattore tempo
Ogni contenuto in una cache Cloud CDN ha un tempo di scadenza associato ed è importante impostare una scadenza adeguata al tuo caso d'uso. Poiché i server di origine devono inviare nuovamente i contenuti che scadono sui server di cache, devi scegliere con attenzione la scadenza.
Un metodo per scegliere la scadenza è classificare i contenuti in base alla frequenza di aggiornamento. Ad esempio:
- Aggiornamenti quasi in tempo reale, come feed in tempo reale per eventi sportivi o traffico
- Aggiornamenti frequenti, ad esempio informazioni meteo settimanali, giornaliere o orarie o immagini di notizie in prima pagina
- Aggiornamenti poco frequenti, ad esempio un logo del sito web o file CSS o JavaScript
Dopodiché, scegli la scadenza in base alla categoria di contenuti. Ad esempio, una scadenza di cinque secondi può essere appropriata per i risultati sportivi quasi in tempo reale, mentre potresti utilizzare una scadenza di un'ora per gli aggiornamenti meteo. Per i contenuti archiviati in Cloud Storage, imposta i tempi di scadenza utilizzando i metadati Cache-Control.
Quando i contenuti sono gestiti da Compute Engine, controlli i tempi di scadenza configurando il software server web.
I tempi di scadenza sono specificati dai valori max-age e s-maxage nell'intestazione Cache-Control. Questa intestazione è definita dalla specifica HTTP.
Ad esempio, la seguente intestazione Cache-Control rende i contenuti associati pubblicamente leggibili e memorizzabili nella cache con una scadenza della cache di 72 ore (259.200 secondi):
Cache-Control: public, max-age=259200
Per massimizzare la memorizzazione nella cache, segui le linee guida riportate nella Panoramica della memorizzazione nella cache. Ricorda che i valori di max-age e s-maxage nel campo dei metadati Cache-Control funzionano insieme nei seguenti modi:
- I valori
max-agees-maxagesono misurati in secondi. - Il valore
s-maxagesi applica solo alle cache condivise, non alle cache dei browser. - Il valore
max-agesi applica a tutte le cache, a meno che non venga sostituito das-maxage.
Per i contenuti che cambiano di rado o che devono cambiare insieme a contenuti correlati, spesso è opportuno utilizzare un lungo periodo di scadenza in combinazione con URL con versione.
Utilizza URL con versione per aggiornare i contenuti
Il controllo delle versioni dei contenuti fornisce una versione diversa dello stesso contenuto, che così viene di fatto rimosso, mostrando agli utenti il nuovo contenuto prima della scadenza della voce della cache. Poiché il controllo delle versioni non prevede costi, ti consigliamo di utilizzarlo come approccio predefinito per l'aggiornamento dei contenuti memorizzabili nella cache.
Per creare versioni dei contenuti, aggiungi un parametro all'URL, ad esempio un numero di versione. Esistono vari modi per includere i parametri negli URL, ad esempio:
Aggiungi una stringa di query:
file.ext?v=100.Per i bucket di backend, tutte le stringhe di query utilizzate per il controllo delle versioni devono essere specificate nella configurazione del bucket di backend. Per maggiori informazioni, consulta Elenco di inclusione delle stringhe di query per le chiavi cache di Cloud Storage.
Modifica il nome file:
file.1.0.0.extofile_v100.ext.Modifica il percorso:
/v100/file.ext.
Quando aggiungi il parametro, modifichi il nome del file e l'URL. Questa modifica impone alla cache di ignorare qualsiasi voce della cache esistente.
Utilizza l'annullamento della convalida con parsimonia per rimuovere i contenuti
L'annullamento della convalida rimuove i contenuti dai server di cache distribuiti di Cloud CDN prima della scadenza della voce della cache. L'annullamento della convalida è a coerenza finale.
Ti consigliamo di utilizzare l'annullamento della convalida con parsimonia e solo come ultima soluzione. Ad esempio, l'annullamento della convalida è utile quando devi rimuovere contenuti per motivi legali o a causa di un caricamento accidentale. In caso contrario, ti consigliamo di utilizzare il controllo delle versioni, se possibile, o di attendere la normale scadenza dei contenuti. I server di cache Cloud CDN rimuovono regolarmente i contenuti a cui si accede raramente per fare spazio a nuovi contenuti. I contenuti a cui non si accede per 30 giorni vengono rimossi senza condizioni.
L'annullamento della convalida della cache è soggetto a limitazione di frequenza.
Per scoprire di più sull'annullamento della convalida,consulta la Panoramica dell'annullamento della convalida della cache.
Ottimizza la coerenza dei file caricati
Le seguenti pratiche consigliate contribuiscono a ottimizzare la coerenza dei caricamenti di file.
Evita di aggiornare i file esistenti
Anziché aggiornare i file esistenti, carica nuove versioni.
Per i nuovi file, utilizza nomi univoci che possono includere numeri di versione o date.
L'aggiunta di un numero di versione (ad esempio, file_v2.css) o di una data (ad esempio, file_20230806.js) al nome file consente di garantire che Cloud CDN recuperi la versione corretta e aggiornata. L'aggiunta di un parametro all'URL del file (ad esempio, file.css?v=2) per forzare il recupero di una nuova versione non è consigliata, perché questo approccio non risolve il rischio di memorizzazione nella cache di un aggiornamento del file di origine non atomico, per cui è comunque possibile memorizzare nella cache file parziali o incompleti.
È fondamentale caricare nuove versioni delle dipendenze prima di caricare i file che vi fanno riferimento. Questa pratica contribuisce a garantire che tutti i riferimenti siano a file completi e aggiornati, riducendo così il rischio di pubblicare file aggiornati parzialmente o troncati.
Esegui aggiornamenti atomici dei file
Quando è necessario aggiornare i file esistenti, esegui l'operazione in modo atomico.
Se un file viene aperto e memorizzato nella cache prima che il caricamento sia completato, potrebbe essere memorizzato nella cache come file incompleto o troncato. Ad esempio, un file come /index.html non può avere un nome univoco, ma può puntare ad altri file con nomi univoci.
Il caricamento di un file con il nome di destinazione può comportare la memorizzazione nella cache di file incompleti quando vengono aperti durante il caricamento. Carica invece il file con un nome temporaneo e rinominalo con il nome di destinazione solo dopo aver completato il caricamento. Questa pratica contribuisce a garantire che il file sia completamente e immediatamente disponibile quando vi viene fatto riferimento.
Quando i file esistenti vengono aggiornati, la memorizzazione nella cache di intervalli di byte può far sì che Cloud CDN conservi intervalli del file precedente dopo il caricamento del nuovo file. Se Cloud CDN ha memorizzato nella cache intervalli del file precedente, le richieste di chunk mancanti possono generare risposte parziali. Ciò accade perché Cloud CDN rileva che il file di origine è cambiato (a causa di modifiche a etag o last-modified), elimina i contenuti scaduti, interrompe i download in corso e genera un errore, che richiede al client di riprovare. Per risolvere il problema, emetti annullamenti della convalida per i file memorizzati nella cache con intervalli di byte in fase di aggiornamento.
Ottimizza Monitoring e Logging
Le seguenti pratiche consigliate aiutano a ottimizzare Monitoring e Logging.
Assicurati che il logging sia abilitato per Cloud CDN
Una best practice per la gestione di Cloud CDN è assicurarsi che il logging sia abilitato per tutti i backend con Cloud CDN abilitato.
Utilizza la dashboard di monitoraggio personalizzata per Cloud CDN
Per garantire maggiore affidabilità e prestazioni, una best practice consiste nel rivedere regolarmente le metriche di monitoraggio relative a Cloud CDN. Un ottimo punto di partenza è la dashboard di monitoraggio personalizzata di Cloud CDN.
Rivedi i test delle prestazioni di terze parti
Esamina i report di fornitori di terze parti, come i report su disponibilità, latenza e throughput forniti da Citrix Radar.