Questa pagina fornisce istruzioni per l'utilizzo della memorizzazione nella cache negativa con Cloud CDN. La memorizzazione nella cache negativa consente di impostare una durata (TTL) diversa per ogni codice di stato.
Lo scopo è quello di applicare un controllo granulare sulla memorizzazione nella cache per errori comuni o reindirizzamenti. Ciò può ridurre il carico sulle origini e migliorare l'esperienza dell'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 istruzioni, consulta 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 tabella seguente.
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 memorizzato nella cache per impostazione predefinita |
| HTTP 404 | Non trovato | 120 secondi |
| HTTP 405 | Metodo non trovato | 60 secondi |
| HTTP 410 | Non più disponibile | 120 secondi |
| HTTP 451 | Non disponibile per motivi legali | 120 secondi |
| HTTP 501 | Non implementato | 60 secondi |
Puoi eseguire l'override di questi valori predefiniti utilizzando la memorizzazione nella cache negativa per impostare un TTL della 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 che memorizzi nella cache sia le operazioni riuscite che quelle non riuscite. Questo permette a Cloud CDN di proteggere le origini dalle richieste che generano errori (ad esempio 404 - Non trovato) nello stesso modo in cui le protegge dalle richieste che generano risposte di operazione riuscita.
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 policy di memorizzazione nella cache negativa.
- Inserisci un codice di stato HTTP.
- Seleziona un valore in Durata (TTL) della cache.
- Fai clic su Aggiorna.
- Fai di nuovo clic su Aggiorna.
gcloud
Per i bucket di backend, utilizza il comando gcloud compute backend-buckets create 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
Ad esempio, per attivare la memorizzazione nella cache negativa solo di due risposte di errore specifiche, 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 Metodo: backendBuckets.insert o Metodo: backendBuckets.update.
Per i servizi di backend, utilizza la chiamata API Metodo: backendServices.insert o Metodo: backendServices.update.
Utilizza una delle chiamate API seguenti:
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 abilitata per configurare le impostazioni di negativeCachingPolicy. Se ometti la policy e hai abilitato negativeCaching, Cloud CDN utilizza i valori predefiniti elencati in Codici di stato e TTL predefiniti.
Quando specifichi una policy di memorizzazione nella cache negativa, assicurati di specificare un valore TTL della cache per tutti i codici di risposta che vuoi memorizzare nella cache. Quando esiste una policy, Cloud CDN non applica alcuna memorizzazione nella cache negativa predefinita.
Per STATUS_CODE, puoi specificare i seguenti codici di stato HTTP:
300,301,302,307,308404,405,410,421,451501
Per ogni codice di stato, puoi specificare un numero di secondi per la memorizzazione nella cache delle risposte. Per disabilitare la memorizzazione nella cache negativa per il codice di stato, escludi il codice dalla policy di memorizzazione nella cache negativa.
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 codici di stato HTTP specifici, come 404, 501, 502 o 503. La durata per cui queste risposte negative vengono memorizzate nella cache è determinata dalla seguente regola di precedenza:
Se la risposta negativa dall'origine include le intestazioni di risposta
explicit Cache-ControloExpires, Cloud CDN memorizza nella cache la risposta negativa per la durata specificata da queste intestazioni.Ad esempio, se l'origine restituisce
404 Not Foundcon un'impostazioneCache-Control: public,max-age=60, il codice di stato404viene memorizzato nella cache per60secondi e la policy di memorizzazione nella cache negativa viene ignorata per quella richiesta specifica.Se la risposta negativa dall'origine non contiene intestazioni
Cache-ControloExpires, Cloud CDN applica le durate (TTL) della policy di memorizzazione nella cache negativa configurate. Ad esempio, se l'origine restituisce404 Not Foundsenza intestazioni di memorizzazione nella cache, la risposta viene memorizzata nella cache per la durata TTL specificata incdnPolicy.negativeCachingPolicyper404 status code.
Quando la modalità cache è impostata su FORCE_CACHE_ALL, la memorizzazione nella cache negativa sostituisce qualsiasi intestazione di memorizzazione nella cache impostata dall'origine. 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 max-age inviato al client nell'intestazione Cache-Control. In particolare, se un determinato errore ha un'impostazione TTL configurata, Cloud CDN considera il valore TTL più basso e la configurazione di client_ttl e invia un'intestazione Cache-Control: public,max-age=N con questo valore. Se un determinato errore non ha un'impostazione TTL configurata, Cloud CDN rimuove qualsiasi intestazione Cache-Control inviata dall'origine. Cloud CDN rimuove sempre anche qualsiasi intestazione Expires inviata dall'origine.
Se un'origine ha inizialmente abilitato la memorizzazione nella cache negativa ma poi l'ha disabilitata (manualmente o disabilitandola per un particolare codice di risposta), le risposte di errore memorizzate nella cache sono considerate valide solo in base alle loro intestazioni Cache-Control o Expires. Pertanto, una volta disattivata la memorizzazione nella cache negativa, una risposta le cui intestazioni non contengono direttive di durata della memorizzazione nella cache non viene gestita dalla cache.
Cloud CDN memorizza nella cache in risposta alle richieste GET. Per saperne di più, consulta Contenuti memorizzabili nella cache.
Ogni voce della cache è identificata da una chiave cache.
Disabilita la 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 il comando gcloud compute backend-buckets create 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 Metodo: backendBuckets.insert o Metodo: backendBuckets.update.
Per i servizi di backend, utilizza la chiamata API Metodo: backendServices.insert o Metodo: backendServices.update.
Utilizza una delle chiamate API seguenti:
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
}