Cambiare le modalità cache

Questa pagina fornisce istruzioni per cambiare le modalità cache con Cloud CDN. Le modalità cache consentono di configurare il modo in cui Cloud CDN memorizza i tuoi contenuti nella cache.

Prima di iniziare

  • Ulteriori informazioni sulle modalità cache e sui contenuti statici.

  • Assicurati che Cloud CDN sia abilitato; per le istruzioni, consulta Utilizzo di Cloud CDN.

  • Se necessario, esegui l'aggiornamento alla versione più recente di Google Cloud CLI:

    gcloud components update
    

Impostazione della modalità cache

Cloud CDN offre tre modalità cache che definiscono il modo in cui le risposte vengono memorizzate nella cache, se Cloud CDN rispetta le direttive di memorizzazione nella cache inviate dall'origine e come vengono applicate le TTL della cache.

Le modalità cache disponibili sono indicate nella seguente tabella:

Modalità cache Comportamento
CACHE_ALL_STATIC Memorizza automaticamente nella cache le risposte riuscite con contenuti statici che non altrimenti non possono essere memorizzati nella cache. Anche le risposte provenienti dall'origine, che impostano valide direttive di memorizzazione nella cache, vengono memorizzate nella cache.

Questo è il comportamento predefinito per i backend abilitati per Cloud CDN creati utilizzando Google Cloud CLI o l'API REST.

USE_ORIGIN_HEADERS Richiede risposte dell'origine riuscite per impostare direttive di memorizzazione nella cache valide e intestazioni di memorizzazione nella cache valide. Le risposte riuscite senza queste istruzioni vengono inoltrate dall'origine.
FORCE_CACHE_ALL Memorizza nella cache incondizionatamente le risposte riuscite, sostituendo eventuali direttive di cache impostate dall'origine. Questa modalità non è appropriata se il backend pubblica contenuti privati per singolo utente, ad esempio le risposte dell'API o HTML dinamico.

Le risposte di errore possono essere memorizzate nella cache anche in assenza di direttive valide.

Prima di impostare la modalità cache su FORCE_CACHE_ALL, considera i seguenti comportamenti:

  • Per gli URL firmati o i cookie firmati, FORCE_CACHE_ALL sostituisce il valore massimo specificato tramite l'impostazione Durata massima voce Cache nella console Google Cloud o l'opzione gcloud --signed-url-cache-max-age.

  • FORCE_CACHE_ALL modifica la durata (TTL) di tutti i contenuti precedentemente memorizzati nella cache. Questa modifica può far sì che alcune voci precedentemente considerate aggiornate (a causa della presenza di TTL più lunghi dalle intestazioni di origine) vengano considerate obsolete e alcune voci che in precedenza erano considerate obsolete possono essere considerate aggiornate.

  • FORCE_CACHE_ALL esegue l'override delle istruzioni di memorizzazione nella cache (Cache-Control e Expires), ma non delle altre intestazioni delle risposte di origine. In particolare, un'intestazione Vary viene comunque rispettata e può sopprimere la memorizzazione nella cache anche in presenza di FORCE_CACHE_ALL. Per maggiori informazioni, consulta Intestazioni Vary.

Per configurare le modalità cache per un backend abilitato per Cloud CDN:

Console

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

    Vai alla pagina 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 e fai clic su Modifica .
  5. Assicurati che l'opzione Abilita Cloud CDN sia selezionata.
  6. In Modalità cache, seleziona una delle seguenti opzioni:
    • Memorizza nella cache il contenuto statico (consigliato): i contenuti statici sono asset web che non cambiano per ogni utente. I contenuti statici si basano sul Content-Type nella risposta. Per ulteriori informazioni, consulta la sezione sui contenuti statici.
    • Utilizza le impostazioni dell'origine basate sulle intestazioni Cache-Control: memorizza le risposte nella cache con direttive valide nelle intestazioni delle risposte.
    • Forza la memorizzazione nella cache di tutti i contenuti: memorizza nella cache tutti i contenuti riusciti forniti dall'origine, ignorando eventuali istruzioni private o no-store.
  7. Fai clic su Salva.

gcloud

Per i servizi di backend, utilizza il comando gcloud compute backend-services create o gcloud compute backend-services update con il flag --cache-mode.

Per i bucket di backend, utilizza il comando gcloud compute backend-buckets create o gcloud compute backend-buckets update con il flag --cache-mode.

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --cache-mode=CACHE_MODE
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --cache-mode=CACHE_MODE

Sostituisci CACHE_MODE con uno dei seguenti valori:

  • CACHE_ALL_STATIC (impostazione predefinita): memorizza automaticamente nella cache contenuti statici. Le risposte contrassegnate come non memorizzabili nella cache (istruzioni private o no-store nelle intestazioni della risposta Cache-Control) non vengono memorizzate nella cache. Per memorizzare nella cache i contenuti dinamici, questi devono avere intestazioni di memorizzazione nella cache valide.

  • USE_ORIGIN_HEADERS: richiede che l'origine imposti intestazioni di memorizzazione nella cache valide per memorizzare nella cache i contenuti. Le risposte senza queste intestazioni non vengono memorizzate nella cache a livello perimetrale di Google e richiedono un viaggio completo verso l'origine per ogni richiesta, il che potrebbe influire sulle prestazioni e sull'aumento del carico sul server di origine.

  • FORCE_CACHE_ALL: memorizza nella cache tutti i contenuti (ovvero le risposte riuscite), ignorando eventuali istruzioni private o no-store nelle intestazioni della risposta Cache-Control. Ciò potrebbe causare la memorizzazione nella cache di contenuti privati per singolo utente (identificabile dall'utente). Abilita questa opzione solo sui backend che non distribuiscono contenuti privati o dinamici, come i bucket Cloud Storage. Non abilitare questa funzionalità sui backend che pubblicano contenuti privati o dinamici.

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": {
  "cacheMode": (CACHE_ALL_STATIC | USE_ORIGIN_HEADERS | FORCE_CACHE_ALL)

Sostituisci CACHE_MODE con uno dei seguenti valori:

  • CACHE_ALL_STATIC (predefinito): memorizza automaticamente nella cache contenuti statici se l'origine non imposta intestazioni di memorizzazione nella cache valide. Le risposte contrassegnate come non memorizzabili nella cache (istruzioni private o no-store nelle intestazioni della risposta Cache-Control) non vengono memorizzate nella cache. Per memorizzare nella cache i contenuti dinamici, questi devono avere intestazioni di memorizzazione nella cache valide.

  • USE_ORIGIN_HEADERS: richiede che l'origine imposti intestazioni di memorizzazione nella cache valide per memorizzare nella cache i contenuti. Le risposte senza queste intestazioni non vengono memorizzate nella cache a livello perimetrale di Google e richiedono un viaggio completo verso l'origine per ogni richiesta, il che potrebbe influire sulle prestazioni e sull'aumento del carico sul server di origine.

  • FORCE_CACHE_ALL: memorizza nella cache tutti i contenuti (ovvero le risposte riuscite), ignorando eventuali istruzioni private o no-store nelle intestazioni della risposta Cache-Control. Ciò potrebbe causare la memorizzazione nella cache di contenuti privati per singolo utente (identificabile dall'utente). Dovresti abilitare questa funzionalità solo sui backend che non distribuiscono contenuti privati o dinamici, come i bucket Cloud Storage.