Questa pagina fornisce le istruzioni per utilizzare la memorizzazione nella cache negativa con Cloud CDN. La memorizzazione nella cache negativa ti consente di impostare un TTL diverso per ogni codice di stato.
Il motivo è applicare un controllo granulare sulla memorizzazione nella cache per errori comuni o reindirizzamenti. Questo può ridurre il carico sulle origini e migliorare l'esperienza utente finale riducendo la latenza di risposta.
Prima di iniziare
Scopri di più sulle modalità di cache e sui contenuti statici.
Assicurati che Cloud CDN sia abilitato; per le istruzioni, consulta la pagina Utilizzo di Cloud CDN.
Se necessario, esegui l'aggiornamento all'ultima versione 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 seguente tabella.
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 | Memorizzazione 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 sostituire questi valori predefiniti utilizzando la memorizzazione nella cache negativa per impostare un TTL di cache per il codice di stato HTTP specificato.
Configurazione della memorizzazione nella cache negativa
La memorizzazione nella cache negativa ti consente di configurare il servizio in modo da memorizzare nella cache gli errori e i operazioni riuscite. Ciò consente a Cloud CDN di proteggere le origini dalle richieste che generano errori (ad esempio 404 Not Found) allo stesso modo in cui protegge le origini dalle richieste che generano risposte riuscite.
Console
- In Google Cloud Console, vai alla pagina Bilanciamento del carico.
- Fai clic sul nome del bilanciatore del carico HTTP(S) esterno.
- Fai clic su Modifica .
- In Configurazione backend, seleziona un backend e fai clic su Modifica .
- Assicurati che l'opzione Attiva Cloud CDN sia selezionata.
- Nella parte inferiore della finestra, fai clic su Configurazioni avanzate.
- Fai clic su Attiva memorizzazione nella cache negativa.
- Fai clic su Aggiungi criterio di memorizzazione nella cache negativa.
- Inserisci un codice di stato HTTP.
- Seleziona una TTL (Time to Live) nella cache.
- Fai clic su Aggiorna.
- Fai di nuovo clic su Aggiorna.
gcloud
Per i bucket di backend, utilizza il comando gcloud compute backend-bucketscreate o gcloud compute backend-buckets update con il flag --negative-caching
.
Per i servizi di backend, utilizza il comando gcloud compute backend-services
create o
gcloud compute backend-services
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 specifiche risposte di errore, ad esempio imposta le risposte con codice di stato 404
in modo che vengano memorizzate nella cache per 60 secondi e le risposte con codice di stato 405
in modo che 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 la chiamata API Method: backendBuckets.insert o Method: backendBuckets.update.
Per i servizi di backend, utilizza la chiamata API Method: backendServices.insert o Metodo: 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": { "negativeCaching": ON, "negativeCachingPolicy": [ { "code": STATUS_CODE, "ttl": TTL_SECONDS } ] }
La memorizzazione nella cache negativa deve essere attivata per configurare le impostazioni negativeCachingPolicy
. Se ometti il criterio e hai negativeCaching
attivato, 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 di cache per tutti i codici di risposta che vuoi memorizzare nella cache. Cloud CDN non applica la memorizzazione nella cache predefinita predefinita in presenza di un criterio.
Per STATUS_CODE, puoi specificare i seguenti codici di stato HTTP:
300
,301
,302
,307
e308
404
,405
,410
,421
e451
501
Per ciascun codice di stato, puoi specificare un numero di secondi da memorizzare nella cache delle risposte.
Per disattivare la memorizzazione nella cache negativa per il codice di stato, ometti il codice nell'elenco per il tuo negativeCachingPolicy
. Un TTL pari a zero disattiva anche la memorizzazione nella cache, ma la best practice è omettere semplicemente il codice dall'elenco.
Il valore massimo consentito è 1800 secondi (30 minuti); tuttavia, gli oggetti a cui si accede raramente potrebbero essere rimossi 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 prive di intestazioni Cache-Control
o Expires
.
Quando la modalità cache è impostata su FORCE_CACHE_ALL
, la memorizzazione nella cache negativa ha la precedenza su qualsiasi intestazione di memorizzazione nella cache impostata dall'origine e Cloud CDN memorizza nella cache la risposta per il periodo di tempo specificato dal TTL, oppure non la memorizza nella cache se non è impostato alcun TTL.
Inoltre, quando la modalità cache è impostata su FORCE_CACHE_ALL
, Cloud CDN
modifica anche il valore di max-age
inviato al client nell'intestazione
Cache-Control
. In particolare, se per un determinato errore è configurata un'impostazione TTL configurata, Cloud CDN utilizzerà l'impostazione TTL inferiore e quella di configurazione client_ttl
e invierà un'intestazione Cache-Control: public,max-age=N
con quel valore. Se per un determinato errore non è configurata un'impostazione TTL, Cloud CDN rimuoverà tutte le intestazioni Cache-Control
inviate dall'origine. Inoltre, Cloud CDN rimuoverà sempre qualsiasi intestazione Expires
inviata dall'origine.
Cloud CDN memorizza le cache in risposta alle richieste GET
. Per ulteriori informazioni, consulta la pagina
Contenuti memorizzabili nella cache.
Ogni voce della cache è identificata da una chiave cache.
Disattiva memorizzazione nella cache negativa
Console
- In Google Cloud Console, vai alla pagina Bilanciamento del carico.
- Fai clic sul nome del bilanciatore del carico HTTP(S) esterno.
- Fai clic su Modifica .
- In Configurazione backend, seleziona un backend e fai clic su Modifica .
- Assicurati che l'opzione Attiva Cloud CDN sia selezionata.
- Nella parte inferiore della finestra, fai clic su Configurazioni avanzate.
- Deseleziona la casella di controllo accanto a Attiva memorizzazione nella cache negativa.
- Fai clic su Aggiorna.
- Fai di nuovo clic su Aggiorna.
gcloud
Per i bucket di backend, utilizza il comando gcloud compute backend-bucketscreate o gcloud compute backend-buckets update con il flag --no-negative-caching
.
Per i servizi di backend, utilizza il comando gcloud compute backend-services
create o
gcloud compute backend-services
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 la chiamata API Method: backendBuckets.insert o Method: backendBuckets.update.
Per i servizi di backend, utilizza la chiamata API Method: backendServices.insert o Metodo: 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": { "negativeCaching": OFF }