Questa pagina fornisce informazioni sulla pubblicazione di contenuti obsoleti e scaduti con con Cloud CDN. La pubblicazione di contenuti inattivi consente alla cache globale di Google di continuare a pubblicare contenuti quando il server di origine non è raggiungibile o restituisce errori a con Cloud CDN.
I motivi sono i seguenti:
- Preferisci mostrare agli utenti contenuti obsoleti anziché restituire errori a utenti.
- La pubblicazione di contenuti obsoleti evita la latenza quando la cache riceve una richiesta di contenuti. scaduto. Invece di dover aspettare il traffico sincrono una riconvalida al backend, la cache pubblica i contenuti inattivi scaduto, attivando una riconvalida separata.
Per abilitare questo comportamento, il backend può specificare stale-while-revalidate
nell'intestazione Cache-Control
della risposta. Cloud CDN
pubblicare i contenuti dalla cache (se disponibili) per il numero di secondi specificato
dopo la scadenza della voce di cache. Cloud CDN in modo asincrono
riconvaliderà i contenuti con l'origine.
Cloud CDN abilita questa operazione per tuo conto con
Impostazione cdnPolicy.serveWhileStale
. Questa impostazione determina per quanto tempo, dopo il
è scaduta, vuol dire che Cloud CDN può continuare a gestire
completamente gestita. 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)
- Minimo: 0 secondi (disattiva la funzionalità)
- Massimo: 604.800 secondi (una settimana)
I contenuti obsoleti vengono pubblicati fino al limite specificato dopo la voce della cache
scadenza, definita da max-age
, s-maxage
o Expires
intestazioni. Per ulteriori informazioni, consulta la sezione Tempi di scadenza e convalida
richieste.
Se una cache perimetrale di Cloud CDN non ha una copia memorizzata nella cache dell'oggetto è inattivo, oppure l'oggetto ha raggiunto il TTL massimo inattivo: Cloud CDN riconvalida in modo sincrono i contenuti con l'origine. Se l'origine restituisce un errore in quel momento, Cloud CDN restituisce l'errore di origine.
Logging e user agent
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 устаревшими. Fanno eccezione i tag con 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, Cloud CDN può inviare
richiesta condizionale in alcune circostanze,
o richiedere nuovamente i contenuti incondizionatamente. In entrambi i casi, la risposta
registrato in Cloud Logging corrisponde alla richiesta originale
Cloud CDN; ad esempio 200 OK
per una richiesta incondizionata o
304 Not Modified
se la risposta originale dell'utente era condizionale.
Istruzione relativa alla richiesta max-stale
del client
I client possono richiedere un tempo di servizio inattivo più breve specificando un max-stale
Cache-control. Se specificata, questa istruzione controlla la quantità
di obsolescenza tollerata dal client.
Se i contenuti memorizzati nella cache sono più vecchi del valore max-stale
del client,
Cloud CDN riconvalida i contenuti prima della pubblicazione.
Il client non può richiedere un valore max-stale
maggiore di questo valore
configurate con l'opzione di configurazione serve-while-stale
e
stale-while-revalidate
istruzione cache-control dall'origine.
Prima di iniziare
Ulteriori informazioni sulle modalità cache e sui contenuti statici.
Assicurati che Cloud CDN sia abilitato. per le istruzioni, vedi Utilizzo di Cloud CDN.
Se necessario, esegui l'aggiornamento alla versione più recente di Google Cloud CLI:
gcloud components update
Pubblica contenuti obsoleti durante la riconvalida
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.
- Per 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.
- 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
oppure
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
oppure
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
Method: backendBuckets.insert
oppure
Method: backendBuckets.update
chiamata API.
Per i servizi di backend, utilizza
Method: backendServices.insert
oppure
Method: 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": { "serveWhileStale": SECONDS }
Disattiva la pubblicazione di contenuti obsoleti
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.
- Per Configurazione backend, seleziona un backend e fai clic su Modifica.
- Assicurati che l'opzione Abilita 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 la classe gcloud compute backend-buckets
create
o
Comando 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
Method: backendBuckets.insert
oppure
Method: backendBuckets.update
chiamata API.
Per i servizi di backend, utilizza
Method: backendServices.insert
oppure
Method: 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": { "serveWhileStale": 0 }