Questa pagina fornisce istruzioni per l'utilizzo della memorizzazione nella cache negativa con Cloud CDN. La memorizzazione nella cache negativa consente di impostare un TTL diverso per ogni stato le API nel tuo codice.
Il motivo è applicare un controllo granulare sulla memorizzazione nella cache per errori o reindirizzamenti. Ciò può ridurre il carico sulle origini e migliorare l'esperienza dell'utente finale riducendo la latenza di risposta.
Prima di iniziare
Ulteriori informazioni sulle modalità cache e sui contenuti statici.
Assicurati che Cloud CDN sia abilitato. Per istruzioni, consulta Utilizzo di Cloud CDN.
Se necessario, esegui l'aggiornamento alla versione più recente di Google Cloud CLI:
gcloud components update
Codici di stato e TTL predefiniti
La memorizzazione nella cache negativa si applica a codici di stato specifici, elencati nella tabella riportata di seguito.
Cloud CDN applica i seguenti TTL predefiniti a questi codici di stato:
Codice di stato | Significato | TTL |
---|---|---|
HTTP 300 | Scelte multiple | 10 minuti |
HTTP 301 e 308 | Reindirizzamenti permanenti | 10 minuti |
HTTP 302 e 307 | Reindirizzamenti temporanei | Non memorizzati nella cache per impostazione predefinita |
HTTP 404 | Non trovato | 120 secondi |
HTTP 405 | Metodo non trovato | 60 secondi |
HTTP 410 | Gone (Non più disponibile) | 120 secondi |
HTTP 451 | Non disponibile per motivi legali | 120 secondi |
HTTP 501 | Non implementata | 60 secondi |
Puoi ignorare questi valori predefiniti utilizzando la memorizzazione nella cache negativa per impostare una cache TTL per il codice di stato HTTP specificato.
Configurazione della memorizzazione nella cache negativa
La memorizzazione nella cache negativa consente di configurare il servizio in modo da gestire gli errori della cache successi. In questo modo, Cloud CDN protegge le origini dalle richieste che generano errori (come 404 Not Found) nello stesso modo in cui protegge le origini dalle richieste che generano risposte positive.
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.
- Nella parte inferiore della finestra, fai clic su Configurazioni avanzate.
- Fai clic su Abilita memorizzazione nella cache negativa.
- Fai clic su Aggiungi memorizzazione nella cache negativa esclusa.
- Inserisci un codice di stato HTTP.
- Seleziona una Durata (TTL) della cache.
- Fai clic su Aggiorna.
- Fai di nuovo clic su Aggiorna.
gcloud
Per i bucket di backend, utilizza gcloud compute backend-buckets
crea o
gcloud compute backend-buckets
comando update
con il flag --negative-caching
.
Per i servizi di backend, utilizza gcloud compute backend-services
crea o
gcloud compute backend-services
comando update
con il flag --negative-caching
.
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --negative-caching
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --negative-caching
Per abilitare la memorizzazione nella cache negativa solo di due risposte di errore specifiche,
Ad esempio, imposta risposte con codice di stato 404
da memorizzare nella cache per 60
secondi e le risposte con il codice di stato 405
affinché vengano memorizzate nella cache per 120 secondi.
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --negative-caching \ --cache-mode=CACHE_ALL_STATIC \ --default-ttl=86400 \ --negative-caching-policy='404=60,405=120'
api
Per i bucket di backend, utilizza Metodo: backendBuckets.insert o Metodo: backendBuckets.update chiamata API.
Per i servizi di backend, utilizza Metodo: backendServices.insert o Metodo: backendServices.update chiamata API.
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": { "negativeCaching": ON, "negativeCachingPolicy": [ { "code": STATUS_CODE, "ttl": TTL_SECONDS } ] }
La memorizzazione nella cache negativa deve essere attivata per configurare negativeCachingPolicy
impostazioni. Se ometti il criterio e hai attivato negativeCaching
, Cloud CDN utilizza i valori predefiniti elencati in Codici di stato e TTL predefiniti.
Quando specifichi un criterio di memorizzazione nella cache negativa, assicurati di specificare un TTL della cache per tutti i codici di risposta che vuoi memorizzare nella cache. Cloud CDN non si applica la memorizzazione nella cache negativa predefinita se esiste un criterio.
Per STATUS_CODE, puoi specificare i seguenti codici di stato HTTP:
300
,301
,302
,307
,308
404
,405
,410
,421
,451
501
Per ogni codice di stato, puoi specificare un numero di secondi per memorizzare le risposte nella cache. Per disattivare la memorizzazione nella cache negativa per il codice di stato, escludi il codice dalla tua di memorizzazione nella cache negativa.
Il valore massimo consentito è 1800 secondi (30 minuti); tuttavia, gli oggetti a cui si accede raramente potrebbero essere espulsi dalla cache prima del TTL definito.
Quando la modalità cache è impostata su CACHE_ALL_STATIC
o USE_ORIGIN_HEADERS
, la memorizzazione nella cache negativa viene applicata alle risposte con il codice di risposta specificato che non contengono intestazioni Cache-Control
o Expires
.
Quando la modalità cache è impostata su FORCE_CACHE_ALL
, la memorizzazione nella cache negativa sostituisce tutte le intestazioni di memorizzazione nella cache impostate dall'origine e Cloud CDN memorizza nella cache la risposta per il periodo di tempo specificato dal TTL oppure non la memorizza affatto se non è impostato alcun TTL.
Inoltre, quando la modalità cache è impostata su FORCE_CACHE_ALL
, Cloud CDN
modificherà anche i max-age
inviati al cliente in Cache-Control
intestazione. In particolare, se per un determinato errore è configurata un'impostazione TTL,
Cloud CDN utilizzerà il valore inferiore tra l'impostazione TTL e il client_ttl
configurazione di configurazione e invia un'intestazione Cache-Control: public,max-age=N
con
quel valore. Se per un determinato errore non è configurata un'impostazione TTL,
Cloud CDN rimuoverà qualsiasi intestazione Cache-Control
inviata dal
origine dati. Cloud CDN, inoltre, rimuoverà sempre qualsiasi intestazione Expires
inviata da
l'origine.
Se per un'origine la memorizzazione nella cache negativa è inizialmente abilitata, ma poi disabilitata (ovvero
manualmente o disattivando la memorizzazione nella cache per un determinato codice di risposta),
le risposte sono considerate valide solo in base al relativo Cache-Control
o Expires
intestazioni. Pertanto, una volta disabilitata la memorizzazione nella cache negativa, viene inviata una risposta senza
direttive età di memorizzazione nella cache nelle sue intestazioni non vengono gestite dalla cache.
Cloud CDN memorizza nella cache in risposta alle richieste GET
. Per ulteriori informazioni, vedi
Contenuti memorizzabili nella cache.
Ogni voce della cache è identificata da una chiave cache.
Disattiva memorizzazione nella cache negativa
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.
- Nella parte inferiore della finestra, fai clic su Configurazioni avanzate.
- Deseleziona la casella di controllo accanto ad Abilita memorizzazione nella cache negativa.
- Fai clic su Aggiorna.
- Fai di nuovo clic su Aggiorna.
gcloud
Per i bucket di backend, utilizza gcloud compute backend-buckets
crea o
gcloud compute backend-buckets
comando update
con il flag --no-negative-caching
.
Per i servizi di backend, utilizza gcloud compute backend-services
crea o
gcloud compute backend-services
comando update
con il flag --no-negative-caching
.
gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME) --no-negative-caching
api
Per i bucket di backend, utilizza Metodo: backendBuckets.insert o Metodo: backendBuckets.update chiamata API.
Per i servizi di backend, utilizza Metodo: backendServices.insert o Metodo: backendServices.update chiamata API.
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": { "negativeCaching": OFF }