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 insieme di contenuti statici e creati dinamicamente tramite un indirizzo IP globale dai seguenti tipi di backend:
- Gruppi di istanze
- Gruppi di endpoint di rete a livello di zona (NEG)
- NEG serverless: uno o più servizi App Engine, Cloud Run o funzioni Cloud Run
- NEG internet per backend esterni
- Bucket in Cloud Storage
Grazie all'integrazione perfetta con Google Cloud, hai diverse opzioni per eseguire il deployment di Cloud CDN e gestire i contenuti. Utilizza le best practice elencate di seguito per pianificare e perfezionare il deployment. Per saperne di più, vedi Configurare Cloud CDN.
Ottimizza la percentuale successi cache
Le seguenti best practice consigliate consentono di ottimizzare il percentuale successi cache.
Memorizza contenuto statico nella cache
Come best practice per migliorare le prestazioni, quando attivi Cloud CDN, devi scegliere la modalità di cache giusta per la tua applicazione.
Il metodo più flessibile e generalmente preferito per gestire le regole della cache è tramite l'utilizzo dell'intestazione cache-control. Se non hai dimestichezza con l'utilizzo delle intestazioni cache-control dell'origine, ti consigliamo di consentire a Cloud CDN di memorizzare automaticamente nella cache i contenuti statici.
Per memorizzare automaticamente nella cache le risposte statiche dell'origine, puoi utilizzare l'impostazione--cache-mode=CACHE_ALL_STATIC
(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 di risposta. Assicurati che i contenuti corrispondano alle categorie descritte. In caso contrario, i contenuti non vengono memorizzati nella cache.
Non memorizzare nella cache 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.
Utilizza chiavi di cache personalizzate per migliorare percentuale successi cache
Per le prestazioni e la scalabilità, è importante ottimizzare il percentuale successi cache. Per impostazione predefinita, Cloud CDN utilizza l'URL completo della richiesta per generare la chiave della cache. Per ottimizzare il rapporto di hit della cache, puoi utilizzare chiavi della cache personalizzate in modo che Cloud CDN non frammenti la cache inutilmente.
Le chiavi della 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 risolvono allo stesso indirizzo IP e indirizzano allo stesso servizio. In questo esempio, l'intero sito web è uguale 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 della cache personalizzata, puoi fare in modo che Cloud CDN ignori la parte dell'host della richiesta e condivida le voci della 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 i 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 il logo.
Un logo deve essere memorizzato nella cache se 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, consulta Utilizzo delle chiavi di cache.
Ottimizzazione del rendimento
Le seguenti best practice consigliate ti aiutano a ottimizzare il rendimento.
Assicurati che il supporto dei protocolli HTTP/3 e QUIC sia abilitato
HTTP/3 è un protocollo internet di nuova generazione. È basato su QUIC, un protocollo sviluppato 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 incontra codici di risposta specifici, memorizza 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.
Ottimizzare la sicurezza
Le seguenti best practice consigliate contribuiscono a ottimizzare la sicurezza.
Utilizzare Google Cloud Armor
Google Cloud Armor si integra con Cloud CDN sia per i contenuti memorizzati nella cache sia per quelli non memorizzati nella cache o con mancata corrispondenza nella cache. Una best practice consiglia di utilizzare Google Cloud Armor in combinazione con 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.
Seguire le best practice per la sicurezza.
Autentica le origini private
L'autenticazione dell'origine offre una garanzia solida che la richiesta proviene solo dal tuo servizio di backend configurato. Offre inoltre 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 delle origini private contribuisce ad assicurare 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 IP per assicurarti che una richiesta provenga da Cloud CDN o dall'Application Load Balancer esterno. Tuttavia, ciò non impedisce ad altri clienti Media CDN di tentare di accedere ai tuoi contenuti specificando l'origine nella loro configurazione.
Ottimizzare la cache
Le seguenti best practice consigliate aiutano a ottimizzare la cache.
Ottimizza 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 convalida nuovamente le risposte.
Puoi anche definire un TTL rivolto al client per sfruttare al meglio le cache del browser.
Per ulteriori informazioni, consulta Utilizzare le impostazioni e gli override TTL.
Impostare la scadenza per i contenuti soggetti a scadenza
A ogni contenuto della cache Cloud CDN è associata una data di scadenza 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 cache, devi scegliere la scadenza con attenzione.
Un metodo per scegliere la scadenza è classificare i contenuti in base alla frequenza con cui li aggiorni, ad esempio:
- Aggiornamenti in tempo quasi reale, come feed dal vivo per eventi sportivi o traffico
- Aggiornamenti frequenti, ad esempio informazioni meteo settimanali, giornaliere o orarie o immagini di notizie in prima pagina
- Aggiornamenti infrequenti, come il logo di un sito web o file CSS o JavaScript
Poi, scegli la scadenza in base alla categoria di contenuti. Ad esempio, un'ora di scadenza potrebbe essere appropriata per i risultati sportivi quasi in tempo reale e un'ora di scadenza 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, puoi controllare le scadenze
configurando il software del server web.
Le date di scadenza sono specificate 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 nella Panoramica della memorizzazione nella cache. Ricorda che i valori max-age
e s-maxage
nel campo dei metadati Cache-Control
interagiscono nel seguente modo:
- 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 ai contenuti correlati, spesso è opportuno utilizzare una scadenza lunga in combinazione con gli URL con versione.
Utilizzare gli URL con versione per aggiornare i contenuti
La gestione delle versioni dei contenuti consente di pubblicare una versione diversa degli stessi contenuti, rimuovendoli di fatto mostrando agli utenti nuovi contenuti prima della scadenza della voce della cache. Poiché la gestione delle versioni è gratuita, ti consigliamo di utilizzarla come approccio predefinito per aggiornare i contenuti cacheabili.
Per eseguire la versione 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 ulteriori informazioni, consulta Elenco di inclusione delle stringhe di query per le chiavi della cache Cloud Storage.
Modifica il nome del 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 forza la cache a ignorare qualsiasi voce esistente.
Utilizza l'invalidazione con parsimonia per rimuovere i contenuti
L'annullamento della convalida rimuove i contenuti dai server della cache distribuita di Cloud CDN prima della scadenza della voce della cache. L'invalidazione è a coerenza finale.
Ti consigliamo di utilizzare l'invalidazione con parsimonia e solo come ultima risorsa. Ad esempio, l'invalidazione è 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 scadenza normale dei contenuti. I server cache di Cloud CDN espellono regolarmente i contenuti a cui si accede raramente per fare spazio ai nuovi contenuti. I contenuti a cui non viene eseguito l'accesso per 30 giorni vengono rimossi senza condizioni.
Gli annullamenti convalida della cache sono limitati in termini di frequenza.
Per scoprire di più sull'invalidazione, consulta la Panoramica dell'invalidazione della cache.
Ottimizzare la coerenza dei file caricati
Le seguenti best practice consigliate aiutano a ottimizzare la coerenza dei caricamenti dei file.
Evita di aggiornare i file esistenti
Invece di 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 es. file_v2.css
) o di una data (ad es.
file_20230806.js
) al nome del file contribuisce ad assicurarti che Cloud CDN recupero la versione corretta e aggiornata. Non è consigliabile aggiungere un parametro all'URL del file (ad esempio,file.css?v=2
) per forzare il recupero di una nuova versione perché questo approccio non risolve il rischio di memorizzare nella cache un aggiornamento del file di origine nonatomic, in cui i file parziali o incompleti possono comunque essere memorizzati nella cache.
È fondamentale caricare le nuove versioni delle dipendenze prima di caricare i file che fanno riferimento a queste. Questa pratica contribuisce a garantire che tutti i riferimenti riguardino file aggiornati e completi, riducendo così il rischio di pubblicare file parzialmente aggiornati o troncati.
Apportare aggiornamenti atomici ai file
Quando è necessario aggiornare i file esistenti, esegui l'operazione in modo atomico.
Se un file viene acceduto e memorizzato nella cache prima del completamento di un 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ò fare riferimento ad altri file con nomi univoci.
Il caricamento di un file con il nome target può comportare la memorizzazione nella cache di file incompleti quando vengono acceduti durante il caricamento. Carica invece il file con un nome provvisorio e rinominalo con il nome di destinazione solo al termine 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 cache in base all'intervallo di byte può comportare che Cloud CDN mantenga gli intervalli del file precedente dopo il caricamento del nuovo file. Se Cloud CDN ha memorizzato nella cache intervalli del file precedente,
le richieste dei chunk mancanti possono comportare risposte parziali. Questo accade perché Cloud CDN rileva che il file di origine è cambiato (perché etag
o last-modified
cambia), elimina i contenuti inattivi, disconnette i download in corso e genera un errore che richiede al client di riprovare. Per ridurre il problema, emetti invalidazioni per i file memorizzati nella cache con intervallo di byte in fase di aggiornamento.
Ottimizzare il monitoraggio e il logging
Le seguenti best practice consigliate consentono di ottimizzare il monitoraggio e il logging.
Assicurati che il logging sia abilitato per Cloud CDN
Una best practice per la gestione di Cloud CDN è assicurarsi che il logging sia attivato per tutti i backend abilitati di Cloud CDN.
Utilizzare la dashboard di monitoraggio personalizzata per Cloud CDN
Per garantire maggiore affidabilità e prestazioni, una best practice è esaminare regolarmente le metriche di monitoraggio relative a Cloud CDN. Un ottimo punto di partenza è la dashboard di monitoraggio personalizzato Cloud CDN.
Esamina i test di prestazioni di terze parti
Esamina i report di fornitori di terze parti, ad esempio i report su disponibilità, latenza e throughput forniti da Citrix Radar.