Media CDN distribuisce i contenuti il più vicino possibile agli utenti utilizzando l'infrastruttura di memorizzazione in una cache perimetrale globale di Google per memorizzare i contenuti nella cache e ridurre il carico sull'infrastruttura di origine.
Puoi controllare la modalità di memorizzazione nella cache dei contenuti per ogni route. In questo modo puoi ottimizzare il comportamento in base al tipo di contenuti, agli attributi della richiesta del client e ai tuoi requisiti di aggiornamento.
Memorizzabile nella cache
Le sezioni seguenti descrivono le risposte memorizzate nella cache di Media CDN e come migliorare l'offload della cache.
Comportamento di memorizzazione nella cache predefinito
Per impostazione predefinita, a ogni servizio Edge Cache vengono applicate le seguenti impostazioni relative alla cache:
Modalità cache predefinita di
CACHE_ALL_STATIC:- Rispetta le direttive di memorizzazione nella cache dell'origine, come
Cache-ControloExpires, fino a un TTL massimo configurabile. - Memorizza automaticamente nella cache i tipi di contenuti statici con un TTL predefinito di 3600 secondi, se non sono presenti direttive di memorizzazione nella cache dell'origine.
- Memorizza nella cache i codici di stato HTTP 200, 204 e 206 (la memorizzazione nella cache negativa non è attivata).
- Rispetta le direttive di memorizzazione nella cache dell'origine, come
Non memorizza nella cache le risposte con direttive di controllo della cache
no-storeoprivateo che non sono altrimenti memorizzabili nella cache.
Le risposte che non sono contenuti statici o a cui mancano istruzioni di memorizzazione nella cache valide non vengono memorizzate nella cache, a meno che la memorizzazione nella cache non sia configurata in modo esplicito. Per scoprire come eseguire l'override del comportamento predefinito, consulta la documentazione sulle modalità cache .
Il comportamento predefinito equivale al seguente cdnPolicy. Le route senza un cdnPolicy esplicito configurato si comportano come se avessero la seguente configurazione:
cdnPolicy: cacheMode: CACHE_ALL_STATIC defaultTtl: 3600s cacheKeyPolicy: includeProtocol: false excludeHost: false excludeQueryString: false signedRequestMode: DISABLED negativeCaching: false
Risposte memorizzabili nella cache
Una risposta memorizzabile nella cache è una risposta HTTP che può essere archiviata e recuperata rapidamente da Media CDN, consentendo tempi di caricamento più rapidi. Non tutte le risposte HTTP sono memorizzabili nella cache.
Puoi configurare le modalità cache per ogni route per ignorare questo comportamento (ad esempio, utilizzando la modalità cache CACHE_ALL_STATIC per memorizzare nella cache i tipi di contenuti multimediali comuni) anche se l'origine non imposta una direttiva di controllo della cache nella risposta.
Le richieste e le risposte che soddisfano i criteri definiti in risposte non memorizzabili nella cache hanno la precedenza sulla memorizzabilità nella cache.
La seguente tabella descrive i requisiti per memorizzare nella cache determinate risposte HTTP. Entrambe le risposte GET e HEAD devono rispettare questi requisiti.
| Attributo HTTP | Requisiti |
|---|---|
| Codice di stato | Il codice di stato della risposta deve essere 200, 203, 204, 206, 300, 301, 302, 307, 308, 400, 403, 404, 405, 410, 451, 500, 501, 502, 503 o 504. |
| Metodi HTTP | GET e HEAD |
| Intestazioni della richiesta | La maggior parte delle direttive di richiesta di memorizzazione nella cache vengono ignorate. Per saperne di più, consulta la sezione Direttive di controllo della cache. |
| Intestazioni della risposta | Contiene un'istruzione di memorizzazione nella cache HTTP valida, ad esempio Ha una modalità cache che memorizza nella cache i contenuti o ha un'intestazione |
| Dimensioni risposta | Fino a 100 GiB. |
L'intestazione HTTP Age è impostata in base a quando Media CDN ha memorizzato per la prima volta la risposta nella cache e in genere rappresenta i secondi trascorsi da quando l'oggetto è stato memorizzato nella cache in una località di protezione dell'origine. Se
l'origine genera un'intestazione della risposta Age, utilizza la modalità cache FORCE_CACHE_ALL
per impedire le riconvalide quando Age supera il TTL della cache.
Per saperne di più su come Media CDN interpreta le direttive di memorizzazione nella cache HTTP, consulta Direttive di controllo della cache.
Requisiti di origine
Per consentire a Media CDN di memorizzare nella cache le risposte dell'origine di dimensioni superiori a 1 MiB, un'origine deve includere quanto segue nelle intestazioni della risposta per le richieste GET, se non diversamente specificato:
- Un'intestazione della risposta HTTP
Last-ModifiedoETag(un validatore). - Un'intestazione HTTP
Datevalida. - Un'intestazione
Content-Lengthvalida. - L'intestazione della risposta
Content-Range, in risposta a una richiestaRange GET. L'intestazioneContent-Rangedeve avere un valore valido nel formatobytes x-y/z(dovezè la dimensione dell'oggetto).
Il protocollo di origine predefinito è HTTP/2. Se le tue origini supportano solo HTTP/1.1, puoi impostare il campo del protocollo in modo esplicito per ogni origine.
Risposte non memorizzabili nella cache
La seguente tabella descrive gli attributi di richiesta e risposta che impediscono la memorizzazione nella cache di una risposta. Le risposte memorizzabili nella cache, ma che corrispondono ai criteri "non memorizzabili nella cache", non vengono memorizzate nella cache.
| Attributo HTTP | Requisito |
|---|---|
| Codice di stato | Un codice di stato diverso da quelli definiti memorizzabili nella cache, ad esempio HTTP 401, HTTP 412 o HTTP 505. Questi codici di stato sono in genere rappresentativi di problemi riscontrati dai client e non dello stato dell'origine. La memorizzazione nella cache di queste risposte può portare a scenari di "avvelenamento della cache" in cui una risposta "errata" attivata dall'utente viene memorizzata nella cache per tutti gli utenti. |
| Intestazioni della richiesta | Per le richieste con un'intestazione di richiesta Un'istruzione |
| Intestazioni della risposta | Ha un'intestazione Ha un'intestazione In modalità |
| Dimensioni risposta | Maggiore di 100 GiB. |
Queste regole si applicano in aggiunta alla modalità cache configurata. In particolare:
- Con la modalità cache
CACHE_ALL_STATICconfigurata, vengono memorizzate nella cache solo le risposte considerate contenuti statici o le risposte con direttive di memorizzazione nella cache valide nelle intestazioni delle risposte. Le altre risposte vengono sottoposte a proxy così come sono. - La modalità cache
FORCE_CACHE_ALLmemorizza nella cache tutte le risposte incondizionatamente, in base ai requisiti di mancata memorizzazione nella cache indicati in precedenza. - La modalità cache
USE_ORIGIN_HEADERSrichiede che le risposte impostino istruzioni di memorizzazione nella cache valide nelle intestazioni delle risposte, oltre a essere un codice di stato memorizzabile nella cache.
Note:
- Le risposte non memorizzate nella cache non hanno le direttive di controllo della cache o altre intestazioni modificate e vengono sottoposte a proxy così come sono.
- Le risposte possono avere le intestazioni
Cache-ControleExpirescompresse in un unico campoCache-Control. Ad esempio, una risposta conCache-Control: publiceCache-Control: max-age=100su righe separate verrebbe compressa comeCache-Control: public,max-age=100. - Le risposte non memorizzabili nella cache (risposte che non verranno mai memorizzate nella cache) non vengono conteggiate
come
Cache Egressdal punto di vista della fatturazione.
Utilizzo delle modalità cache
Le modalità cache consentono di configurare quando Media CDN deve rispettare le direttive di memorizzazione nella cache dell'origine, memorizzare nella cache i tipi di contenuti multimediali statici e memorizzare nella cache tutte le risposte dall'origine, indipendentemente dalle direttive impostate.
Le modalità cache vengono configurate a livello di route e, combinate con le sostituzioni del TTL, consentono di configurare il comportamento della cache in base a host, percorso,parametri di ricercay e intestazioni (qualsiasi parametro di richiesta corrispondente).
- Per impostazione predefinita, Media CDN utilizza la modalità cache
CACHE_ALL_STATIC, che memorizza automaticamente nella cache i tipi di contenuti multimediali statici comuni per 1 ora (3600 secondi), dando la priorità a qualsiasi direttiva della cache specificata dall'origine per le risposte memorizzabili nella cache. - Puoi aumentare o diminuire il TTL della cache applicato alle risposte senza un TTL della cache esplicito impostato (un'istruzione
max-ageos-maxage) impostando il campocdnPolicy.defaultTtlin una route. - Per evitare la memorizzazione nella cache delle risposte non riuscite per un periodo di tempo superiore a quello previsto, i codici di stato non 2xx (non riusciti) non vengono memorizzati nella cache in base al relativo
Content-Type(tipo MIME) e non viene applicato il TTL predefinito.
Le modalità cache disponibili, impostate sul cdnPolicy.cacheMode di ogni
percorso, sono riportate nella tabella seguente.
| Modalità cache | Comportamento |
|---|---|
USE_ORIGIN_HEADERS |
Richiede risposte provenienti dall'origine per impostare istruzioni di memorizzazione nella cache e intestazioni di memorizzazione nella cache valide. Per un elenco completo dei requisiti, consulta Risposte memorizzabili nella cache. |
CACHE_ALL_STATIC |
Memorizza automaticamente nella cache le risposte con esito positivo con contenuti statici, a meno che non abbiano un'istruzione Il contenuto statico include video, audio, immagini e asset web comuni come
definito dal tipo MIME nell'intestazione della risposta |
FORCE_CACHE_ALL |
Memorizza incondizionatamente le risposte con esito positivo nella cache, ignorando qualsiasi istruzione di memorizzazione nella cache impostata dall'origine. Assicurati di non pubblicare contenuti privati per ciascun utente (come contenuti HTML dinamici o risposte dell'API) con questa modalità configurata. |
| BYPASS_CACHE | Qualsiasi richiesta che corrisponde a una route con questa modalità di cache configurata bypassa la cache, anche se esiste un oggetto memorizzato nella cache che corrisponde a quella chiave cache. Ti consigliamo di utilizzare questa opzione solo per il debug perché Media CDN è progettata come infrastruttura di cache su scala planetaria e non come proxy di uso generale. |
Tipi MIME dei contenuti statici
La modalità cache CACHE_ALL_STATIC consente a Media CDN di memorizzare automaticamente nella cache i contenuti statici comuni, come video, audio, immagini e asset web comuni, in base al tipo MIME restituito nell'intestazione della risposta HTTP Content-Type. Tuttavia, indipendentemente dal tipo di media, Media CDN
assegna la priorità a qualsiasi intestazione Cache-Control o Expires esplicita nella risposta dell'origine.
La tabella seguente elenca i tipi MIME che possono essere memorizzati automaticamente nella cache
con la modalità cache CACHE_ALL_STATIC.
Le risposte non vengono memorizzate automaticamente nella cache se non hanno un'intestazione della risposta Content-Type con un valore corrispondente ai seguenti valori. Devi assicurarti che la risposta imposti un'istruzione di memorizzazione nella cache valida oppure devi utilizzare la modalità cache FORCE_CACHE_ALL per memorizzare nella cache le risposte in modo incondizionato.
| Categoria | Tipi MIME |
|---|---|
| Asset web | text/css text/ecmascript text/javascript application/javascript |
| Caratteri | Qualsiasi Content-Type corrispondente a font/* |
| Immagini | Qualsiasi Content-Type corrispondente a image/* |
| Video | Qualsiasi Content-Type corrispondente a video/* |
| Audio | Qualsiasi Content-Type corrispondente a audio/* |
| Tipi di documenti formattati | application/pdf and application/postscript |
Tieni presente quanto segue:
- Il software server web dell'origine deve impostare
Content-Typeper ogni risposta. Molti server web impostano automaticamente l'intestazioneContent-Type, tra cui NGINX, Varnish e Apache. - Cloud Storage imposta l'intestazione
Content-Typeautomaticamente al caricamento quando utilizzi la console Google Cloud o gcloud CLI per caricare contenuti. - Cloud Storage fornisce sempre un'intestazione
Cache-Controla Media CDN. Se non viene scelto esplicitamente alcun valore, invia un valore predefinito. Di conseguenza, tutte le risposte con esito positivo di Cloud Storage vengono memorizzate nella cache in base ai valori predefiniti di Cloud Storage, a meno che tu non modifichi esplicitamente i metadati di controllo cache per gli oggetti in Cloud Storage o utilizzi la modalitàFORCE_CACHE_ALLper ignorare i valori inviati da Cloud Storage.
Se una risposta è memorizzabile nella cache in base al tipo MIME, ma ha una direttiva di risposta Cache-Control con valore private o no-store oppure un'intestazione Set-Cookie, non viene memorizzata nella cache.
Altri tipi di media, come HTML (text/html) e JSON
(application/json), non vengono memorizzati nella cache per impostazione predefinita. Questi tipi di risposte sono in genere dinamici (per utente) e non sono adatti all'architettura di Media CDN. Ti consigliamo di utilizzare
Cloud CDN per pubblicare asset web e memorizzare nella cache le risposte
API.
Configura i TTL della cache
Gli override della durata (TTL) ti consentono di impostare valori TTL predefiniti per i contenuti memorizzati nella cache e di eseguire l'override dei valori TTL impostati nelle direttive di controllo della cache max-age e s-maxage (o nelle intestazioni Expires) impostate dalle origini.
I TTL, impostati tramite override o utilizzando una direttiva della cache, sono ottimistici. I contenuti a cui si accede raramente o non popolari potrebbero essere rimossi dalla cache prima del raggiungimento del TTL.
La tabella seguente mostra tre impostazioni TTL.