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 unico 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 elencate qui per pianificare e perfezionare l'implementazione. Per saperne di più, vedi Configurare Cloud CDN.
Ottimizzare la percentuale successi cache
Le seguenti pratiche consigliate aiutano a ottimizzare il percentuale successi cache.
Memorizza contenuto statico nella cache
Come best practice per migliorare il rendimento, quando abiliti Cloud CDN, devi scegliere la modalità di cache corretta per la tua applicazione.
Il metodo più flessibile e generalmente preferito per gestire le regole della cache è l'utilizzo dell'intestazione di controllo cache. Se non hai familiarità con l'utilizzo delle intestazioni Cache-Control di 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
(impostazione predefinita). Questa impostazione consente
a Cloud CDN di memorizzare nella cache i tipi di contenuti statici comuni quando l'origine non specifica direttive di memorizzazione nella cache nelle intestazioni della risposta. Assicurati che i tuoi contenuti corrispondano alle
categorie descritte, altrimenti non vengono memorizzati nella cache.
Non memorizzare nella cache i contenuti specifici dell'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.
Utilizzare chiavi di cache personalizzate per migliorare percentuale successi cache
Per prestazioni e scalabilità, è importante ottimizzare il percentuale successi cache. Per impostazione predefinita, Cloud CDN utilizza l'URL della richiesta completo per creare la chiave di cache. Per ottimizzare il rapporto di hit della cache, puoi utilizzare chiavi della 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 della cache personalizzate:
Hai due host che si risolvono nello stesso indirizzo IP e vanno 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 dell'intestazione
Host:
diversa nelle richieste HTTP. Con una chiave di 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 del sito web sono diversi, ma utilizzi lo stesso logo aziendale su entrambi i domini e hai un servizio di backend dedicato che contiene contenuti condivisi. Quando attivi Cloud CDN e personalizzi le chiavi della 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 della 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 di cache, vedi Utilizzo delle chiavi di cache.
Ottimizza le prestazioni
Le seguenti pratiche consigliate contribuiscono a ottimizzare il rendimento.
Assicurati che il supporto dei protocolli HTTP/3 e QUIC sia abilitato
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.
Utilizzo della memorizzazione negativa nella cache
La memorizzazione nella cache negativa offre un controllo granulare sulla memorizzazione nella cache per reindirizzamenti o errori comuni. 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 la sezione
Configurare TLS Early Data.
Puoi abilitare TLS Early Data in modalità STRICT
o PERMISSIVE
.
STRICT
: abilita i dati iniziali per i metodi idempotenti (GET
,HEAD
,OPTIONS
eTRACE
), che non hanno altri parametri di ricerca. 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 ricerca. Quando utilizzi questa modalità, devi monitorare attentamente il comportamento e la postura di sicurezza 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
.
Ottimizzare la sicurezza
Le seguenti pratiche consigliate contribuiscono a ottimizzare la sicurezza.
Utilizzare 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 mancanti nella cache. Una best practice consigliata è utilizzare Cloud Armor insieme a Cloud CDN, ove possibile, per aumentare la sicurezza delle applicazioni web.
Utilizzare 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.
Autenticare le origini private
L'autenticazione dell'origine offre una forte garanzia che la richiesta provenga solo dal tuo 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 di origine impediscono l'accesso all'origine, utilizza la lista consentita di IP 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.
Ottimizzare la cache
Le seguenti pratiche consigliate aiutano a ottimizzare la cache.
Ottimizzare i TTL della cache
Puoi impostare o sostituire i TTL per ottimizzare la durata della memorizzazione nella cache delle risposte da parte di Cloud CDN e il momento in cui Cloud CDN le convalida nuovamente.
Puoi anche definire un TTL rivolto al client per sfruttare al meglio le cache del browser.
Per ulteriori informazioni, vedi Utilizzo delle impostazioni e degli override TTL.
Impostare la scadenza per i contenuti sensibili al fattore temporale
Ogni contenuto in una cache Cloud CDN ha un tempo di scadenza associato ed è importante impostare una scadenza appropriata per il tuo caso d'uso. Poiché i server di origine devono inviare nuovamente i contenuti che scadono sui server della 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 in tempo quasi reale, come feed live 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
Poi scegli la scadenza in base alla categoria di contenuti. Ad esempio, una scadenza di cinque secondi
potrebbe essere appropriata per i risultati sportivi quasi in tempo reale, mentre una scadenza di un'ora
potrebbe essere utilizzata per gli aggiornamenti meteo. Per i contenuti archiviati in
Cloud Storage, imposta le scadenze utilizzando i
metadati Cache-Control
.
Quando i contenuti vengono pubblicati da Compute Engine, controlli i tempi di scadenza
configurando il software del 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
(259200 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 max-age
e s-maxage
nel campo dei metadati Cache-Control
funzionano insieme nei seguenti
modi:
- I valori
max-age
es-maxage
sono misurati in secondi. - Il valore
s-maxage
si applica solo alle cache condivise, non alle cache del browser. - Il valore
max-age
si 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.
Utilizzare URL con versione per aggiornare i contenuti
Il controllo delle versioni dei contenuti mostra una versione diversa degli stessi contenuti, rimuovendoli di fatto mostrando agli utenti nuovi contenuti prima della scadenza della voce della cache. Poiché il controllo delle versioni è gratuito, 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, 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 della cache di Cloud Storage.
Modifica il nome file:
file.1.0.0.ext
ofile_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.
Utilizzare l'invalidazione 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 di cache. L'annullamento della convalida è a coerenza finale.
Ti consigliamo di utilizzare l'annullamento con parsimonia e solo come ultima risorsa. Ad esempio, l'annullamento è 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 della cache di Cloud CDN eliminano 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.
Gli annullamenti della convalida della cache sono limitati in base alla frequenza.
Per scoprire di più sull'invalidazione, consulta la Panoramica dell'invalidazione della cache.
Ottimizzare la coerenza dei file caricati
Le seguenti pratiche consigliate contribuiscono a ottimizzare la coerenza dei caricamenti dei 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 del 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, in cui è comunque possibile memorizzare nella cache file parziali o incompleti.
È fondamentale caricare nuove versioni delle dipendenze prima di caricare i file che le 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.
Eseguire aggiornamenti atomici ai file
Quando è necessario aggiornare i file esistenti, esegui l'operazione in modo atomico.
Se un file viene aperto e memorizzato nella cache prima del completamento del caricamento, 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 il completamento del caricamento. Questa pratica contribuisce a garantire che il file sia completamente e immediatamente disponibile quando viene fatto riferimento.
Quando i file esistenti vengono aggiornati, la memorizzazione nella cache di intervalli di byte può comportare la memorizzazione da parte di Cloud CDN di intervalli del file precedente dopo il caricamento del nuovo file. Se Cloud CDN ha memorizzato nella cache intervalli del file precedente,
le richieste di blocchi 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 obsoleti,
interrompe i download in corso e genera un errore, che richiede
al client di riprovare. Per risolvere il problema, emetti
invalidazioni per i file memorizzati nella cache con intervallo di byte che vengono aggiornati.
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 consiste nell'assicurarsi che la registrazione sia abilitata per tutti i backend abilitati per Cloud CDN.
Utilizzare 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.
Controllare i test delle prestazioni di terze parti
Esamina i report di fornitori di terze parti, come i report su disponibilità, latenza e velocità effettiva forniti da Citrix Radar.