Pubblica contenuti scaduti

Questa pagina fornisce informazioni sulla pubblicazione di contenuti obsoleti e scaduti con Cloud CDN. La pubblicazione di contenuti scaduti 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 scaduti per gli utenti anziché restituire errori.
  • La pubblicazione di contenuti scaduti evita la latenza quando la cache riceve una richiesta per contenuti appena scaduti. Anziché dover attendere una nuova convalida sincrona del backend, la cache pubblica i contenuti appena scaduti, attivando nel mentre una nuova convalida separata.

Cloud CDN offre i seguenti due metodi per controllare per quanto tempo un oggetto scaduto può essere pubblicato mentre viene inviata una nuova richiesta di convalida all'origine:

  • All'origine: puoi specificare l'istruzione Cache-Control: stale-while-revalidate nell'intestazione della risposta. Cloud CDN rispetta questa istruzione e pubblica i contenuti scaduti per il numero di secondi specificato dopo la scadenza della voce di cache. Durante questo periodo, Cloud CDN invia in modo asincrono una richiesta all'origine per convalidare e aggiornare i contenuti.

  • Tramite la policy: questa è un'impostazione di configurazione di Cloud CDN che stabilisce una durata massima, dopo la scadenza della risposta, durante la quale Cloud CDN può continuare a pubblicare una versione scaduta. Questa impostazione viene configurata utilizzando l'opzione serve-while-stale. Se l'istruzione stale-while-revalidate non è presente nella risposta, viene utilizzata questa impostazione. Se non viene specificato un valore, viene utilizzato il valore predefinito, 86400s (1 giorno).

Cloud CDN non supporta l'istruzione stale-if-error. Questa istruzione indica alla cache di evitare di pubblicare contenuti scaduti, a meno che la riconvalida sincrona con il server di origine non sia riuscita con codici di stato di errore specifici.

I valori predefiniti, minimi e massimi sono i seguenti:

  • Predefinito: 86.400 secondi (un giorno)
  • Minimo: 0 secondi (disattiva la funzionalità)
  • Massimo: 604.800 secondi (una settimana)

I contenuti scaduti vengono pubblicati fino al limite specificato dopo la scadenza della voce di cache, definita dalle intestazioni max-age, s-maxage o Expires. Per saperne di più, consulta la sezione Tempi di scadenza e richieste di convalida.

Se una edge cache di Cloud CDN non ha una copia memorizzata nella cache dell'oggetto scaduto da pubblicare, o se l'oggetto ha raggiunto il TTL di scadenza massimo, 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 dell'origine.

Logging e user agent

Le richieste asincrone effettuate da Cloud CDN vengono visualizzate dal server di origine esattamente come le normali richieste di riconvalida che si verificano quando non vengono pubblicati contenuti scaduti. La differenza è che sono contrassegnate da un'intestazione User-Agent contenente Cloud-CDN-Google.

Le richieste asincrone vengono inoltre registrate separatamente in Cloud Logging, pertanto una richiesta utente servita con un contenuto scaduto genera due voci di log: la prima per i contenuti effettivamente pubblicati per l'utente e la seconda per la richiesta di convalida all'origine. Come le riconvalide sincrone, in alcune circostanze Cloud CDN potrebbe inviare una richiesta condizionale, o semplicemente richiedere di nuovo i contenuti in modo incondizionato. In entrambi i casi, il codice di risposta registrato in Cloud Logging corrisponde alla richiesta originale a Cloud CDN; ad esempio, 200 OK per una richiesta incondizionata o 304 Not Modified se la risposta originale dell'utente era condizionale.

Istruzione per la richiesta max-stale del client

I client possono richiedere un tempo di servizio scaduto più breve specificando un'istruzione di controllo cache max-stale. Se specificata, questa istruzione controlla il valore massimo di scadenza tollerato dal client.

Se la scadenza dei contenuti memorizzati nella cache è superiore al valore max-stale del client, Cloud CDN li convalida nuovamente prima di pubblicarli.

Il client non può richiedere un valore max-stale maggiore del valore configurato con l'opzione di configurazione serve-while-stale e l'istruzione di controllo cache stale-while-revalidatedall'origine.

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
    

Pubblica contenuti scaduti durante la riconvalida

Console

  1. Nella console Google Cloud , vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic sul nome del bilanciatore del carico delle applicazioni esterno.
  3. Fai clic su Modifica.
  4. In Configurazione backend, seleziona un backend, quindi fai clic su Modifica.
  5. Assicurati che l'opzione Abilita Cloud CDN sia selezionata.
  6. Nella parte inferiore della finestra, fai clic su Configurazioni avanzate.
  7. In Opzioni CDN aggiuntive, seleziona una delle seguenti opzioni per Restituisci quando inattivo:
    • 1 minuto
    • 5 minuti
    • 10 minuti
    • 30 minuti
    • 1 giorno (opzione consigliata)
    • 7 giorni
  8. Fai clic su Aggiorna.
  9. 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 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": {
  "serveWhileStale": SECONDS
}

Disattiva la pubblicazione di contenuti scaduti

Console

  1. Nella console Google Cloud , vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic sul nome del bilanciatore del carico delle applicazioni esterno.
  3. Fai clic su Modifica.
  4. In Configurazione backend, seleziona un backend, quindi fai clic su Modifica.
  5. Assicurati che l'opzione Abilita Cloud CDN non sia selezionata.
  6. Nella parte inferiore della finestra, fai clic su Configurazioni avanzate.
  7. In Opzioni CDN aggiuntive > Restituisci quando inattivo, seleziona Disattiva Pubblica quando inattivo.
  8. Fai clic su Aggiorna.
  9. 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 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": {
  "serveWhileStale": 0
}