Questa pagina fornisce informazioni sulla pubblicazione di contenuti obsoleti ed scaduti con Cloud CDN. La pubblicazione di contenuti non aggiornati consente alla cache globale di Google di continuare a pubblicare contenuti quando il server di origine non è raggiungibile o restituisce errori a Cloud CDN.
I motivi per farlo sono i seguenti:
- Preferisci pubblicare contenuti obsoleti per gli utenti anziché restituire errori.
- La pubblicazione di contenuti obsoleti evita la latenza quando la cache riceve una richiesta di contenuti che sono appena scaduti. Anziché dover attendere una convalida sincrona nel backend, la cache pubblica i contenuti obsoleti che sono appena scaduti, attivando contemporaneamente una convalida separata.
Per attivare questo comportamento, il backend può specificare la direttiva stale-while-revalidate
nell'intestazione Cache-Control
della risposta. Cloud CDN poili pubblicherà dalla cache (se disponibile) per il numero di secondi specificatodopo il momento di scadenza della voce della cache. In modo asincrono, Cloud CDN
convaliderà i contenuti con l'origine.
Cloud CDN lo attiva per tuo conto con l'impostazionecdnPolicy.serveWhileStale
. Questa impostazione indica per quanto tempo, dopo la scadenza della risposta, Cloud CDN può continuare a pubblicare una versione obsoleta. Se non diversamente specificato nella risposta, il valore è 86400s
(1 giorno).
Cloud CDN non supporta la direttiva stale-if-error
. Questa direttiva indica alla cache di evitare di pubblicare contenuti obsoleti, a meno che la convalida sincrona con il backend non sia riuscita con codici di stato di errore specifici.
I valori predefiniti, minimi e massimi sono i seguenti:
- Valore predefinito: 86.400 secondi (un giorno)
- Valore minimo: 0 secondi (la funzionalità viene disattivata)
- Massimo: 604.800 secondi (una settimana)
I contenuti inattivi vengono pubblicati fino al limite specificato dopo la data e l'ora di scadenza della voce della cache, che è definita dalle intestazioni max-age
, s-maxage
o Expires
. Per ulteriori informazioni, consulta Tempi di scadenza e richieste di convalida.
Se una cache di Cloud CDN non ha una copia memorizzata nella cache dell'oggetto da pubblicare come inattiva o se l'oggetto ha raggiunto il TTL massimo inattivo, Cloud CDN convalida nuovamente i contenuti in modo sincrono con l'origine. Se l'origine restituisce un errore in quel momento, Cloud CDN restituisce l'errore dell'origine.
Logging e agente utente
Le richieste asincrone effettuate da Cloud CDN vengono visualizzate sul tuo server di origine esattamente come le normali richieste di riconvalida che si verificano quando non vengono pubblicati contenuti obsoleti. L'eccezione è che sono contrassegnati da un'intestazione User-Agent
contenente Cloud-CDN-Google
.
Anche le richieste asincrone vengono registrate separatamente in Cloud Logging, pertanto una richiesta dell'utente non aggiornata genera due voci di log: la prima per i contenuti effettivamente pubblicati per l'utente e la seconda per la richiesta di convalida nuovamente all'origine. Come per le riconvalide sincrone, in alcuni casi Cloud CDN potrebbe inviare una
richiesta condizionale o semplicemente richiedere nuovamente i contenuti senza condizioni. In entrambi i casi, il codice di risposta registrato in Cloud Logging corrisponde alla richiesta originale a Cloud CDN; ad esempio, un 200 OK
per una richiesta incondizionata o un 304 Not Modified
se la risposta originale dell'utente era condizionale.
Istruzione relativa alla richiesta del client max-stale
I client possono richiedere un tempo di servizio non valido più breve specificando una direttiva cache-control max-stale
. Se specificata, questa direttiva controlla la quantità di устарелость tollerata dal client.
Se i contenuti memorizzati nella cache sono meno recenti del valore max-stale
del client,
Cloud CDN convalida nuovamente i contenuti prima della pubblicazione.
Il client non può richiedere un valore max-stale
maggiore del valore configurato con l'opzione di configurazione serve-while-stale
e la direttiva cache-control stale-while-revalidate
dell'origine.
Prima di iniziare
Scopri di più sulle modalità della cache e sui contenuti statici.
Assicurati che Cloud CDN sia abilitato. Per istruzioni, consulta Utilizzare Cloud CDN.
Se necessario, esegui l'aggiornamento alla versione più recente di Google Cloud CLI:
gcloud components update
Pubblicare contenuti obsoleti durante la convalida
Console
- Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic sul nome dell'Application Load Balancer esterno.
- Fai clic su Modifica.
- In Configurazione del backend, seleziona un backend e poi fai clic su Modifica.
- Assicurati che l'opzione Attiva Cloud CDN sia selezionata.
- Nella parte inferiore della finestra, fai clic su Configurazioni avanzate.
- In Opzioni CDN aggiuntive, seleziona una delle seguenti opzioni per Pubblica anche se non aggiornata:
- 1 minuto
- 5 minuti
- 10 minuti
- 30 minuti
- 1 giorno (opzione consigliata)
- 7 giorni
- 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 il comando gcloud compute backend-buckets
update
con il flag --serve-while-stale
.
Per i servizi di backend, utilizza il comando gcloud compute backend-services
create
o il comando gcloud compute backend-services
update
con il flag --serve-while-stale
.
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --serve-while-stale=SECONDS
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --serve-while-stale=SECONDS
Ad esempio:
gcloud compute backend-services update my-backend-service --serve-while-stale=180s
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": { "serveWhileStale": SECONDS }
Disattivare la pubblicazione di contenuti obsoleti
Console
- Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic sul nome dell'Application Load Balancer esterno.
- Fai clic su Modifica.
- In Configurazione del backend, seleziona un backend e poi fai clic su Modifica.
- Assicurati che l'opzione Attiva Cloud CDN non sia selezionata.
- Nella parte inferiore della finestra, fai clic su Configurazioni avanzate.
- In Opzioni CDN aggiuntive > Pubblicazione anche se non aggiornata, seleziona Disattiva pubblicazione anche se non aggiornata.
- 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 valore del flag --serve-while-stale
impostato su 0
.
Per i servizi di backend, utilizza il comando gcloud compute backend-services
create
o il comando gcloud compute backend-services
update
con il valore del flag --serve-while-stale
impostato su 0
.
gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME) --serve-while-stale=0
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": { "serveWhileStale": 0 }