Questa pagina fornisce istruzioni per modificare le modalità cache con Cloud CDN. Le modalità cache consentono di configurare il modo in cui Cloud CDN memorizza i tuoi contenuti nella cache.
Prima di iniziare
Leggi ulteriori informazioni sulle modalità cache e sui contenuti statici.
Assicurati che Cloud CDN sia abilitato. Per le istruzioni, consulta Utilizzo di Cloud CDN.
Se necessario, esegui l'aggiornamento all'ultima versione di Google Cloud CLI:
gcloud components update
Impostazione della modalità cache
Cloud CDN offre tre modalità cache che definiscono il modo in cui le risposte vengono memorizzate nella cache, se Cloud CDN rispetta le direttive di memorizzazione nella cache inviate dall'origine e come vengono applicate le TTL della cache.
Le modalità cache disponibili sono mostrate nella tabella seguente:
Modalità cache | Comportamento |
---|---|
CACHE_ALL_STATIC |
Memorizza nella cache automaticamente le risposte riuscite con contenuti statici che non sono altrimenti non memorizzabili nella cache.
Anche le risposte provenienti dall'origine, che impostano valide direttive di memorizzazione nella cache, vengono memorizzate nella cache. Questo è il comportamento predefinito per i backend abilitati per Cloud CDN creati utilizzando Google Cloud CLI o l'API REST. |
USE_ORIGIN_HEADERS |
Richiede risposte dell'origine riuscite per impostare istruzioni cache valide e intestazioni di memorizzazione nella cache valide. Le risposte positive senza queste istruzioni vengono inoltrate dall'origine. |
FORCE_CACHE_ALL |
Memorizza nella cache incondizionatamente le risposte riuscite, sostituendo eventuali direttive di cache impostate dall'origine. Questa modalità non è appropriata se il backend pubblica contenuti privati per utente, ad esempio le risposte dell'API o HTML dinamico. |
Le risposte di errore possono essere memorizzate nella cache anche in assenza di direttive valide.
Prima di impostare la modalità cache su FORCE_CACHE_ALL
, considera i seguenti
comportamenti:
Per URL firmati o cookie firmati,
FORCE_CACHE_ALL
sostituisce l'età massima specificata tramite l'impostazione Inserimento di una voce nella cache per l'età massima nella console Google Cloud o l'opzionegcloud --signed-url-cache-max-age
.FORCE_CACHE_ALL
modifica la durata (TTL) di qualsiasi contenuto precedentemente memorizzato nella cache. Questa modifica può far sì che alcune voci che in precedenza erano considerate aggiornate (a causa della presenza di TTL più lunghi dalle intestazioni di origine) vengano considerate obsolete e potrebbe far sì che alcune voci che in precedenza erano considerate inattive vengano considerate aggiornate.FORCE_CACHE_ALL
esegue l'override delle direttive di memorizzazione nella cache (Cache-Control
eExpires
), ma non delle altre intestazioni delle risposte di origine. In particolare, un'intestazioneVary
viene comunque rispettata e può sopprimere la memorizzazione nella cache anche in presenza diFORCE_CACHE_ALL
. Per ulteriori informazioni, consulta la sezione Intestazioni Vary.
Per configurare le modalità cache per un backend abilitato per Cloud CDN:
Console
- Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic sul nome del bilanciatore del carico delle applicazioni esterno.
- Fai clic su Modifica .
- In Configurazione backend, seleziona un backend e fai clic su Modifica .
- Assicurati che l'opzione Abilita Cloud CDN sia selezionata.
- In Modalità cache, seleziona una delle seguenti opzioni:
- Memorizza nella cache i contenuti statici (consigliato): i contenuti statici sono asset web che non cambiano per ogni utente. Il contenuto statico si basa sul
Content-Type
nella risposta. Per ulteriori informazioni, consulta la sezione Contenuti statici. - Utilizza le impostazioni dell'origine in base alle intestazioni Cache-Control: memorizza nella cache le risposte con direttive di cache valide nelle intestazioni della risposta.
- Forza la memorizzazione nella cache di tutti i contenuti: memorizza nella cache tutti i contenuti correttamente forniti dall'origine, ignorando eventuali direttive
private
ono-store
.
- Memorizza nella cache i contenuti statici (consigliato): i contenuti statici sono asset web che non cambiano per ogni utente. Il contenuto statico si basa sul
- Fai clic su Salva.
gcloud
Per i servizi di backend, utilizza il comando gcloud compute backend-services
create
o gcloud compute backend-services
update
con il flag --cache-mode
.
Per i bucket di backend, utilizza il comando gcloud compute backend-buckets
create
o gcloud compute backend-buckets
update
con il flag --cache-mode
.
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --cache-mode=CACHE_MODE
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --cache-mode=CACHE_MODE
Sostituisci CACHE_MODE
con uno dei seguenti:
CACHE_ALL_STATIC
(impostazione predefinita): memorizza automaticamente nella cache contenuti statici. Le risposte contrassegnate come non memorizzabili nella cache (istruzioniprivate
ono-store
nelle intestazioni della rispostaCache-Control
) non vengono memorizzate nella cache. Per memorizzare nella cache i contenuti dinamici, questi devono avere intestazioni di memorizzazione nella cache valide.USE_ORIGIN_HEADERS
: richiede all'origine di impostare intestazioni di memorizzazione nella cache valide per memorizzare nella cache i contenuti. Le risposte senza queste intestazioni non vengono memorizzate nella cache a livello perimetrale di Google e richiedono un viaggio completo verso l'origine per ogni richiesta, con un potenziale impatto sulle prestazioni e sull'aumento del carico sul server di origine.FORCE_CACHE_ALL
: memorizza nella cache tutti i contenuti (ovvero le risposte riuscite), ignorando eventuali istruzioniprivate
ono-store
nelle intestazioni della rispostaCache-Control
. Ciò potrebbe causare la memorizzazione nella cache di contenuti privati per utente (identificabile dall'utente). Abilita questa opzione solo sui backend che non distribuiscono contenuti privati o dinamici, come i bucket Cloud Storage. Non abilitare questa opzione sui backend che pubblicano contenuti privati o dinamici.
API
Per i bucket di backend, utilizza la chiamata API Method: backendBuckets.insert
o Method: backendBuckets.update
.
Per i servizi di backend, utilizza la chiamata API Method: backendServices.insert
o Method: backendServices.update
.
Utilizza una delle seguenti chiamate API:
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 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
Aggiungi il seguente snippet al corpo della richiesta JSON:
"cdnPolicy": { "cacheMode": (CACHE_ALL_STATIC | USE_ORIGIN_HEADERS | FORCE_CACHE_ALL)
Sostituisci CACHE_MODE
con uno dei seguenti:
CACHE_ALL_STATIC
(impostazione predefinita): memorizza automaticamente nella cache contenuti statici se l'origine non imposta intestazioni di memorizzazione nella cache valide. Le risposte contrassegnate come non memorizzabili nella cache (istruzioniprivate
ono-store
nelle intestazioni della rispostaCache-Control
) non vengono memorizzate nella cache. Per memorizzare nella cache i contenuti dinamici, questi devono avere intestazioni di memorizzazione nella cache valide.USE_ORIGIN_HEADERS
: richiede all'origine di impostare intestazioni di memorizzazione nella cache valide per memorizzare i contenuti nella cache. Le risposte senza queste intestazioni non vengono memorizzate nella cache a livello perimetrale di Google e richiedono un viaggio completo verso l'origine per ogni richiesta, con un potenziale impatto sulle prestazioni e sull'aumento del carico sul server di origine.FORCE_CACHE_ALL
: memorizza nella cache tutti i contenuti (ovvero le risposte riuscite), ignorando eventuali istruzioniprivate
ono-store
nelle intestazioni della rispostaCache-Control
. Ciò potrebbe causare la memorizzazione nella cache di contenuti privati per utente (identificabile dall'utente). Devi abilitare questa funzionalità solo sui backend che non distribuiscono contenuti privati o dinamici, come i bucket Cloud Storage.