Panoramica della memorizzazione nella cache

Una risposta memorizzabile nella cache è una risposta HTTP che può essere archiviata e recuperata rapidamente da Cloud CDN, consentendo tempi di caricamento più rapidi. Non tutte le risposte HTTP sono memorizzabili nella cache.

Modalità cache

Con le modalità cache puoi controllare i fattori che determinano se Cloud CDN memorizza o meno i tuoi contenuti nella cache.

Cloud CDN offre tre modalità cache che determinano come le risposte vengono memorizzate nella cache, se Cloud CDN rispetta o meno le istruzioni di memorizzazione nella cache inviate dall'origine e come vengono applicate le durate (TTL) della cache.

Le modalità cache disponibili sono riportate nella tabella seguente:

Modalità cache Comportamento
CACHE_ALL_STATIC Memorizza automaticamente nella cache le risposte con esito positivo con contenuti statici che altrimenti non sono memorizzabili nella cache. Anche le risposte provenienti dall'origine che impostano istruzioni di memorizzazione nella cache valide vengono memorizzate nella cache.

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

USE_ORIGIN_HEADERS Richiede risposte con esito positivo provenienti dall'origine per impostare istruzioni di memorizzazione nella cache e intestazioni di memorizzazione nella cache valide. Le risposte con esito positivo senza queste istruzioni vengono inoltrate dall'origine.
FORCE_CACHE_ALL Memorizza incondizionatamente le risposte con esito positivo nella cache, ignorando qualsiasi istruzione di memorizzazione nella cache impostata dall'origine. Questa modalità non è adatta se il backend gestisce contenuti privati per ciascun utente (utente identificabile), come contenuti HTML dinamici o risposte dell'API.

Le risposte di errore potrebbero essere memorizzate nella cache anche in assenza di istruzioni di memorizzazione nella cache valide.

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

  • Per URL firmati o cookie firmati, FORCE_CACHE_ALL sostituisce la durata massima specificata tramite l'impostazione Durata massima delle voci di cache nella console Google Cloud o l'opzione gcloud --signed-url-cache-max-age.

  • FORCE_CACHE_ALL modifica la durata (TTL) di qualsiasi contenuto precedentemente memorizzato nella cache. Questa modifica può far sì che alcune voci precedentemente considerate aggiornate (perché avevano TTL più lunghi specificati dalle intestazioni dell'origine) vengano considerate scadute e che alcune voci precedentemente considerate scadute vengano considerate aggiornate.

  • FORCE_CACHE_ALL ignora le istruzioni di memorizzazione nella cache (Cache-Control ed Expires), ma non ignora altre intestazioni della risposta dell'origine. In particolare, un'intestazione Vary potrebbe disattivare la memorizzazione nella cache anche se la modalità cache è FORCE_CACHE_ALL. Per saperne di più, consulta Intestazioni Vary.

Per istruzioni per la configurazione, consulta Impostazione della modalità cache.

Contenuti statici

I contenuti statici sono contenuti sempre uguali, anche se vengono visualizzati da utenti diversi. Il CSS che utilizzi per definire lo stile del tuo sito, il codice JavaScript per fornire interattività, video e contenuti con immagini in genere non cambiano per ogni utente per un determinato URL (chiave cache) e quindi traggono vantaggio dalla memorizzazione nella cache nell'intera rete edge globale di Cloud CDN.

Quando imposti la modalità cache su CACHE_ALL_STATIC e una risposta non ha istruzioni di memorizzazione nella cache esplicite nelle intestazioni Cache-Control o Expires, Cloud CDN memorizza nella cache automaticamente la risposta per quanto segue:

  • Asset web, inclusi CSS (text/css), JavaScript (application/javascript) e tutti i caratteri web, incluso WOFF2 (font/woff2)
  • Immagini, inclusi i formati JPEG (image/jpg) e PNG (image/png)
  • Video, inclusi i formati H.264, H.265 e MP4 (video/mp4)
  • File audio, inclusi i formati MP3 (audio/mpeg) e MP4 (audio/mp4)
  • Documenti formattati, inclusi i file PDF (application/pdf)

La tabella seguente offre un riepilogo.

Categoria Tipi MIME
Asset web text/css text/ecmascript text/javascript application/javascript
Caratteri Qualsiasi Content-Type corrispondente a font/*
Immagini Qualsiasi Content-Type corrispondente a image/*
Video Qualsiasi Content-Type corrispondente a video/*
Audio Qualsiasi Content-Type corrispondente a audio/*
Tipi di documenti formattati application/pdf e application/postscript

Cloud CDN esamina l'intestazione della risposta HTTP Content-Type, che riflette il tipo MIME dei contenuti forniti.

Tieni presente quanto segue:

  • Il software server web dell'origine deve impostare Content-Type per ogni risposta. Molti server web, tra cui NGINX, Varnish e Apache, impostano automaticamente l'intestazione Content-Type.

  • Cloud Storage imposta automaticamente l'intestazione Content-Type quando utilizzi la console Google Cloud o Google Cloud CLI per caricare contenuti.

  • Cloud Storage fornisce sempre un'intestazione Cache-Control a Cloud CDN. Se non viene scelto esplicitamente alcun valore, invia un valore predefinito. Di conseguenza, tutte le risposte con esito positivo di Cloud Storage vengono memorizzate nella cache in base ai valori predefiniti di Cloud Storage, a meno che tu non modifichi esplicitamente i metadati di controllo cache per gli oggetti in Cloud Storage o utilizzi la modalità FORCE_CACHE_ALL per ignorare i valori inviati da Cloud Storage.

  • Se vuoi memorizzare nella cache i tipi di contenuti text/html e application/json, devi impostare intestazioni Cache-Control esplicite nella risposta, facendo attenzione a evitare di memorizzare accidentalmente nella cache i dati di un utente e fornirli a tutti gli utenti.

Se una risposta è memorizzabile nella cache in base al tipo MIME, ma ha un'intestazione della risposta Cache-Control con valore private o no-store oppure un'intestazione Set-Cookie, non viene memorizzata nella cache. Per saperne di più, consulta le regole di memorizzazione nella cache.

Altri tipi di contenuti, come HTML (text/html) e JSON (application/json), non vengono memorizzati nella cache per impostazione predefinita per le risposte con esito positivo. Questi tipi di risposte sono in genere dinamici (per utente). Alcuni esempi includono carrelli degli acquisti, pagine di prodotto con personalizzazione per l'utente e risposte API autenticate. Tuttavia, se abilitata, la memorizzazione nella cache negativa può comunque causarne la memorizzazione nella cache per determinati codici di stato.

Cloud CDN non utilizza le estensioni dei file nel percorso URL per determinare se una risposta può essere memorizzata nella cache, perché molte risposte valide memorizzabili nella cache non vengono riflesse negli URL.

Contenuti memorizzabili nella cache

Cloud CDN memorizza nella cache le risposte che soddisfano tutti i requisiti di questa sezione. Alcuni di questi requisiti sono specificati dalla RFC 7234, mentre altri sono specifici di Cloud CDN.

Cloud CDN potrebbe modificare periodicamente l'insieme esatto di condizioni in base alle quali memorizza i contenuti nella cache. Se vuoi impedire esplicitamente a Cloud CDN di memorizzare nella cache i tuoi contenuti, segui le linee guida riportate nella RFC 7234 per determinare come specificare una risposta con garanzia di non memorizzazione nella cache. Consulta anche la sezione Contenuti non memorizzabili nella cache in base alle intestazioni dell'origine.

Cloud CDN memorizza le risposte nella cache se sono soddisfatte tutte le seguenti condizioni.

Attributo Requisito
Fornito da Servizio di backend, bucket di backend o un backend esterno con Cloud CDN abilitato
In risposta a Richiesta GET
Codice di stato

200, 203, 204, 206, 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 o 501.

Aggiornamento

La risposta ha un'intestazione Cache-Control con un'istruzione max-age o s-maxage oppure un'intestazione Expires con un timestamp futuro.

Per le risposte memorizzabili nella cache senza una durata (ad esempio, con no-cache), l'istruzione public deve essere fornita in modo esplicito.

Con la modalità cache CACHE_ALL_STATIC, se non sono presenti istruzioni di aggiornamento, una risposta con esito positivo e tipo di contenuto statico è comunque idonea alla memorizzazione nella cache.

Con la modalità cache FORCE_CACHE_ALL, qualsiasi risposta con esito positivo è idonea alla memorizzazione nella cache. Ciò potrebbe comportare la memorizzazione nella cache di contenuti privati per utente. Devi impostare FORCE_CACHE_ALL solo sui backend che non forniscono contenuti privati o dinamici, come i bucket Cloud Storage.

Se è abilitata la memorizzazione nella cache negativa e il codice di stato corrisponde a un codice per cui la memorizzazione nella cache negativa specifica un TTL, la risposta è idonea alla memorizzazione nella cache, anche senza istruzioni sullo stato di aggiornamento esplicite.

Contenuti

Per le origini HTTP/1, la risposta deve contenere un'intestazione Content-Length, Content-Range o Transfer-Encoding: chunked valida.

Per le origini che utilizzano versioni più avanzate del protocollo HTTP (HTTP/2 e successive), non è necessario che la risposta abbia queste intestazioni.

Dimensioni Valore minore o uguale alle dimensioni massime.

Per le risposte con dimensioni comprese tra 10 MiB e 100 GiB, consulta i vincoli di memorizzazione nella cache aggiuntivi descritti in Richieste di intervalli di byte.

Per i bucket di backend Cloud Storage, segui questi suggerimenti aggiuntivi:

Per impostazione predefinita, quando un oggetto è pubblico e non specifica metadati Cache-Control, Cloud Storage assegna un'intestazione Cache-Control: public, max-age=3600 all'oggetto. Puoi impostare valori diversi utilizzando i metadati Cache-Control.

Per un esempio che mostra come configurare un bilanciatore del carico delle applicazioni esterno con un bucket di backend, consulta Configurazione di Cloud CDN con un bucket di backend.

Dimensione massima

Cloud CDN applica una dimensione massima per ogni risposta. Qualsiasi risposta con un corpo più grande della dimensione massima non viene memorizzata nella cache, ma viene comunque inviata al client.

La dimensione massima varia a seconda che il server di origine supporti le richieste di intervalli di byte.

Il server di origine supporta le richieste di intervalli di byte Il server di origine non supporta le richieste di intervalli di byte
100 GiB (107.374.182.400 byte) 10 MiB (10.485.760 byte)

Quasi tutti i server web moderni (inclusi NGINX, Apache e Varnish) supportano le richieste di intervalli di byte.

Contenuti non memorizzabili nella cache in base alle intestazioni dell'origine

Esistono controlli che bloccano la memorizzazione nella cache delle risposte. Cloud CDN potrebbe modificare periodicamente l'insieme esatto di condizioni in base alle quali memorizza i contenuti nella cache; di conseguenza, se vuoi impedire esplicitamente a Cloud CDN di memorizzare i tuoi contenuti nella cache, segui le linee guida nello standard (RFC 7234) per determinare come specificare una risposta con garanzia di non memorizzazione nella cache.

Cloud CDN non memorizza nella cache una risposta se non soddisfa i requisiti per i contenuti memorizzabili nella cache o se si verifica una delle seguenti condizioni.

Attributo Requisito
Fornito da Servizio di backend o backend esterno senza Cloud CDN abilitato
Cookie Ha un'intestazione Set-Cookie
Intestazione Vary Ha un valore diverso da Accept, Accept-Encoding, Access-Control-Request-Headers, Access-Control-Request-Method, Origin, Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site, X-Goog-Allowed-Resources, X-Origin o una delle intestazioni configurate per far parte delle impostazioni della chiave cache.
Istruzione della risposta La risposta ha un'intestazione Cache-Control con l'istruzione no-store o private (a meno che non venga utilizzata la modalità cache FORCE_CACHE_ALL, nel qual caso l'intestazione Cache-Control viene ignorata).
Istruzione della richiesta La richiesta ha un'istruzione Cache-Control: no-store
Autorizzazione della richiesta La richiesta ha un'intestazione Authorization, a meno che non venga sostituita da Cache-Control della risposta.
Dimensioni Maggiori della dimensione massima

Se è presente Cache-Control: no-store o private, ma i contenuti sono ancora memorizzati nella cache, il motivo è uno dei seguenti:

  • È configurata la firma dell'URL.
  • La modalità cache di Cloud CDN è impostata per forzare la memorizzazione nella cache di tutte le risposte.

Impedisci la memorizzazione nella cache

Per impedire la memorizzazione di informazioni private nelle cache Cloud CDN, segui questi passaggi:

  1. Assicurati che la modalità cache di Cloud CDN non sia impostata su FORCE_CACHE_ALL, che memorizza nella cache in modo incondizionato tutte le risposte con esito positivo.
  2. Includi un'intestazione Cache-Control: private nelle risposte che non devono essere memorizzate nelle cache Cloud CDN oppure un'intestazione Cache-Control: no-store nelle risposte che non devono essere memorizzate in alcuna cache, neanche quella di un browser web.
  3. Non firmare gli URL che forniscono l'accesso a informazioni private. Quando l'accesso ai contenuti avviene utilizzando un URL firmato, i contenuti sono potenzialmente idonei alla memorizzazione nella cache indipendentemente dalle istruzioni Cache-Control nella risposta.
  4. Per le richieste dell'origine (riempimento della cache) che includono l'intestazione della richiesta Authorization, Cloud CDN memorizza nella cache solo le risposte che includono le istruzioni di controllo cache public, must-revalidate o s-maxage quando la modalità cache è impostata su USE_ORIGIN_HEADERS o CACHE_ALL_STATIC. In questo modo si evita la memorizzazione accidentale nella cache di contenuti per utente e di contenuti che richiedono l'autenticazione. La modalità cache FORCE_CACHE_ALL non presenta questa limitazione.

Intestazioni delle risposte personalizzate

Con le intestazioni delle risposte personalizzate puoi specificare le intestazioni che il bilanciatore del carico delle applicazioni classico aggiunge alle risposte inviate tramite proxy. Le intestazioni delle risposte personalizzate ti consentono di riflettere lo stato della cache sui tuoi client, sui dati geografici dei client e sulle tue intestazioni delle risposte statiche.

Per istruzioni, consulta Configura intestazioni delle risposte personalizzate.

Chiavi cache

Ogni voce della cache in una cache Cloud CDN è identificata da una chiave cache. Quando una richiesta entra nella cache, questa converte l'URI della richiesta in una chiave cache e la confronta con le chiavi delle voci memorizzate nella cache. Se trova una corrispondenza, la cache restituisce l'oggetto associato a quella chiave.

Per i servizi di backend, Cloud CDN utilizza per impostazione predefinita l'URI della richiesta completo come chiave cache. Ad esempio, https://example.com/images/cat.jpg è l'URI completo di una richiesta specifica per l'oggetto cat.jpg. Questa stringa viene utilizzata come chiave cache predefinita. Viene individuata una corrispondenza solo per le richieste con questa stringa esatta. Le richieste per http://example.com/images/cat.jpg o https://example.com/images/cat.jpg?user=user1 non corrispondono.

Per i bucket di backend, l'impostazione predefinita prevede che la chiave cache sia costituita dall'URI senza protocollo o host. Per impostazione predefinita, solo i parametri di query noti a Cloud Storage sono inclusi nella chiave cache (ad esempio, "generation").

Pertanto, per un determinato bucket di backend, i seguenti URI vengono risolti nello stesso oggetto memorizzato nella cache:

  • http://example.com/images/cat.jpg
  • https://example.com/images/cat.jpg
  • https://example.com/images/cat.jpg?user=user1
  • http://example.com/images/cat.jpg?user=user1
  • https://example.com/images/cat.jpg?user=user2
  • https://media.example.com/images/cat.jpg
  • https://www.example.com/images/cat.jpg

Puoi cambiare le parti dell'URI utilizzate nella chiave cache. Sebbene il nome file e il percorso debbano sempre far parte della chiave, quando personalizzi la chiave cache puoi includere o omettere qualsiasi combinazione di protocollo, host o stringa di query. Utilizzo delle chiavi cache descrive come personalizzare le chiavi cache.

Parte dell'URI Personalizzazione URL di esempio con la stessa chiave cache
Protocollo Ometti il protocollo dalla chiave cache.
  • https://example.com/images/cat.jpg
  • http://example.com/images/cat.jpg
Host Ometti l'host dalla chiave cache.
  • https://example.com/images/cat.jpg
  • https://example2.com/images/cat.jpg
Stringa di query

Ometti la stringa di query dalla chiave cache.

Ometti o includi selettivamente parti della stringa di query.

  • https://example.com/images/cat.jpg?user=user1
  • https://example.com/images/cat.jpg?user=user2

Oltre a omettere o includere l'intera stringa di query, puoi utilizzare parti della stringa di query tramite elenchi di inclusione ed esclusione.

Elenco di inclusione delle stringhe di query

Puoi controllare in modo selettivo quali parametri della stringa di query vengono incorporati da Cloud CDN nelle chiavi cache. Ad esempio, se crei un elenco di inclusione di user, https://example.com/images/cat.jpg?user=user1&color=blue crea una chiave cache https://example.com/images/cat.jpg?user=user1 che corrisponde anche a https://example.com/images/cat.jpg?user=user1&color=red.

Per utilizzare questa opzione, devi includere la stringa di query, specificare un elenco di inclusione non vuoto e non specificare un elenco di esclusione.

Elenco di inclusione della stringhe di query per le chiavi cache di Cloud Storage

L'inclusione dei parametri di query URL nelle chiavi cache per i bucket Cloud Storage consente di supportare il busting della cache. Il busting della cache consente a un utente di recuperare una nuova versione del file caricato, anche se la versione precedente è ancora validamente memorizzata nella cache in base all'impostazione del TTL.

Puoi utilizzare un elenco di inclusione con i parametri della stringa di query nella chiave cache utilizzata per fornire le risposte da un bucket di backend. Sebbene Cloud Storage non pubblichi contenuti o percorsi diversi in base ai parametri di query, puoi scegliere di includere parametri che ti consentono di eseguire il busting della cache dei contenuti statici archiviati nei bucket Cloud Storage.

Ad esempio, puoi aggiungere un parametro di query ?version=VERSION o ?hash=HASH basato sui contenuti sottostanti. Ciò limita la necessità di annullare in modo proattivo la validità dei contenuti ed è in linea con i moderni workflow di sviluppo web, in cui i framework web e gli URL utilizzano un hash dei contenuti per evitare di fornire oggetti scaduti nei vari deployment.

Poiché l'inclusione dei parametri di query nella chiave cache viene attivata solo esplicitamente, Cloud CDN non supporta l'esclusione dei parametri di query da una chiave cache per un bucket di backend.

Elenco di esclusione della stringa di query

Puoi controllare in modo selettivo quali parametri della stringa di query vengono ignorati da Cloud CDN utilizzando un elenco di esclusione. Ad esempio, se crei un elenco di esclusione per user, nella chiave cache vengono utilizzati tutti i parametri della stringa di query tranne user.

Con l'elenco di esclusione configurato e https://example.com/images/cat.jpg?user=user1&color=blue come input, Cloud CDN crea una chiave cache https://example.com/images/cat.jpg?color=blue che corrisponde anche a https://example.com/images/cat.jpg?user=user2&color=blue, ma non a https://example.com/images/cat.jpg?user=user1&color=red.

Per utilizzare questa opzione, devi includere la stringa di query, specificare un elenco di esclusione non vuoto e non specificare un elenco di inclusione.

Ordine dei parametri di query

La chiave cache generata non dipende dall'ordine dei parametri di query.

Ad esempio, i seguenti parametri di query generano la stessa chiave cache:

  • info=123&variant=13e&geography=US
  • geography=US&variant=13e&info=123

Impostazioni delle intestazioni HTTP e dei cookie HTTP

Puoi migliorare le percentuali di successo della cache e l'offload dell'origine con le seguenti impostazioni di configurazione della chiave cache:

  • Per servizi e bucket di backend: utilizza le intestazioni HTTP come parte delle chiavi cache includendo le intestazioni denominate nella configurazione della chiave cache.
  • Solo per servizi di backend: utilizza i cookie HTTP denominati come chiavi cache, ad esempio per i test A/B (multivariati), le release canary e scenari simili.

Le richieste che includono intestazioni HTTP o cookie HTTP aggiuntivi nella richiesta vengono memorizzate nella cache alla terza richiesta in una posizione della cache per la chiave cache in questione. In questo modo si riduce l'impatto sulle percentuali di eliminazioni dalla cache di valori di intestazioni o cookie con cardinalità elevata. In circostanze e condizioni di traffico utente normali, questo non dovrebbe risultare evidente e contribuisce a garantire che i contenuti popolari rimangano memorizzati nella cache.

Includi intestazioni della richiesta

Per memorizzare nella cache altre varianti di una risposta, puoi includere intestazioni della richiesta aggiuntive nella chiave cache.

Alcune intestazioni non sono consentite nelle chiavi cache perché in genere hanno una cardinalità molto elevata. Nella maggior parte dei casi, i valori di queste intestazioni sono univoci per utente (Cookie, Authorization) o hanno migliaia di valori probabili (Referer, User-Agent, Accept). Ad esempio, l'intestazione User-Agent può avere oltre 5000 valori univoci data la grande varietà di browser, dispositivi utente e sistemi operativi. Questi tipi di intestazioni avrebbero un impatto negativo grave sulla percentuale di successi della cache.

Sono accettati solo nomi di campi dell'intestazione HTTP validi in base alla RFC 7230. I nomi dei campi dell'intestazione non fanno distinzione tra maiuscole e minuscole e i duplicati vengono rifiutati.

Facoltativamente, puoi configurare il server di origine in modo che includa le intestazioni della richiesta della chiave cache configurate nella risposta Vary. Non è obbligatorio per Cloud CDN, ma può essere utile per le cache downstream. Per saperne di più, consulta Intestazioni Vary.

Cloud CDN non consente l'inclusione delle seguenti intestazioni nell'elenco delle intestazioni:

  • Accept
  • Accept-Encoding
  • Authority, perché questo valore è controllato dalla configurazione (cdnPolicy.includeHost)
  • Authorization, in genere per singolo utente come nei token OAuth Bearer
  • CDN-Loop
  • Connection
  • Content-MD5
  • Content-Type
  • Cookie
  • Date
  • Forwarded, spesso per singolo client o proxy
  • From
  • Host, perché questo valore è controllato dalla configurazione (cdnPolicy.includeHost)
  • If-Match, If-Modified-Since o If-None-Match
  • Origin
  • Proxy-Authorization
  • Range
  • Referer (o Referrer)
  • User-Agent
  • Want-Digest
  • X-CSRFToken e X-CSRF-Token come utilizzati da Django e Ruby on Rails
  • X-Forwarded-For, spesso per singolo client o proxy
  • X-User-IP
  • Qualsiasi intestazione che inizia con quanto segue:
    • Access-Control-, ad esempio Access-Control-Request-Headers e Access-Control-Request-Method
    • Sec-Fetch-
    • Sec-GFE-
    • Sec-Google-
    • X-Amz-
    • X-GFE-
    • X-Goog-
    • X-Google-

Utilizza variabili personalizzate con le intestazioni della richiesta

Le chiavi cache sono utili quando devi pubblicare contenuti in modo diverso in base al dispositivo e alla località di ogni utente. Ad esempio, puoi consentire a un sito web adattabile di mostrare le immagini appropriate agli utenti che visualizzano i contenuti in base al tipo di dispositivo o impostare una lingua predefinita utile in base alla loro località. Puoi definire le chiavi cache utilizzando intestazioni della richiesta personalizzate e variabili personalizzate.

Per utilizzare variabili personalizzate con le intestazioni della richiesta:

  1. Definisci un'intestazione della richiesta personalizzata per il tuo servizio di backend. Includi una o più variabili per il valore dell'intestazione della richiesta personalizzata.
  2. Aggiorna la chiave cache per utilizzare l'intestazione della richiesta personalizzata.

Per Cloud CDN, puoi utilizzare solo le seguenti variabili quando definisci intestazioni che sono sia intestazioni della richiesta personalizzate sia intestazioni della chiave cache:

  • device_request_type
  • user_agent_family
  • client_region
  • client_region_subdivision

Cloud CDN limita le variabili per contribuire a mantenere le prestazioni della cache. Ciò è analogo ai limiti delle intestazioni che possono essere utilizzate come chiavi cache.

Ad esempio, se potessi specificare X-Lat-Long:{client_city_lat_long} come intestazione della richiesta personalizzata e poi aggiungere X-Lat-Long al tuo insieme di intestazioni della chiave cache, Cloud CDN tenterebbe di memorizzare nella cache una copia della risposta per ogni valore di client_city_lat_long. Ciò comporterebbe un uso eccessivo della cache, il flush non necessario dei contenuti e una minore opportunità di restituire successi della cache.

Per questi motivi, le variabili con cardinalità elevata non sono incluse nell'elenco delle variabili utilizzate per definire le intestazioni della richiesta personalizzate e, successivamente, le chiavi cache.

Stesse intestazioni con valori diversi

Supponiamo che l'utente invii più intestazioni con lo stesso nome e valori diversi, ad esempio:

My-Header: Value1
My-Header: Value2

In questo caso, Cloud CDN modifica la richiesta presupponendo che l'intestazione debba seguire la convenzione standard che consente ad alcune intestazioni di avere più valori. Cloud CDN le comprime in un elenco separato da virgole da inviare al backend, quindi è come se il client avesse inviato quanto segue:

My-Header: Value1, Value2

Includi cookie denominati

Un cookie HTTP è un accoppiamento name=value e una richiesta può includere più cookie HTTP, separati da un punto e virgola sulla stessa riga oppure come intestazioni della richiesta Cookie discrete con un cookie per intestazione.

Puoi fornire un elenco di massimo cinque nomi di cookie.

Gli user agent (come i browser web) spesso limitano a 4 KB il numero di cookie memorizzati per dominio. Assicurati di non inviare troppi cookie (o cookie troppo grandi), poiché lo user agent potrebbe non inviarli tutti in una richiesta. Ciò può influire sulla ricezione di una risposta specifica memorizzata nella cache da parte di un utente.

Se fornisci i contenuti statici da un nome host diverso rispetto a quello da cui emetti i cookie, assicurati che l'attributo Domain del cookie (e l'attributo Path) consenta l'invio del cookie insieme alle richieste di contenuti statici.

Se una richiesta include più istanze dello stesso nome cookie, viene rispettata solo la prima.

Istruzioni di controllo cache

Le istruzioni di controllo cache HTTP influiscono sul comportamento di Cloud CDN, come descritto nella tabella seguente.

N/A indica che un'istruzione non è applicabile a una richiesta o a una risposta.

Istruzione Richiesta Risposta
no-store Se presente in una richiesta, Cloud CDN la rispetta e non memorizza la risposta nella cache.

Una risposta con no-store non viene memorizzata nella cache.

È possibile eseguire l'override di questa impostazione per singolo backend con la modalità cache FORCE_CACHE_ALL.

no-cache L'istruzione della richiesta no-cache viene ignorata per impedire ai client di essere in grado di avviare o forzare la riconvalida sull'origine.

Una risposta con no-cache viene memorizzata nella cache, ma deve essere riconvalidata con l'origine prima di essere fornita.

È possibile eseguire l'override di questa impostazione per singolo backend con la modalità cache FORCE_CACHE_ALL.

public N/A

Quest'istruzione non è necessaria per la memorizzazione nella cache, ma è una best practice includerla per i contenuti che devono essere memorizzati nella cache dai proxy.

private N/A

Una risposta con l'istruzione private non viene memorizzata nella cache da Cloud CDN, anche se la risposta è altrimenti considerata memorizzabile nella cache. I client (come i browser) potrebbero comunque memorizzare nella cache il risultato.

È possibile eseguire l'override di questa impostazione per singolo backend con la modalità cache FORCE_CACHE_ALL. Utilizza no-store per impedire completamente la memorizzazione nella cache delle risposte.

max-age=SECONDS L'istruzione max-age della richiesta viene ignorata. Una risposta memorizzata nella cache viene restituita come se questa intestazione non fosse inclusa nella richiesta. Una risposta con l'istruzione max-age viene memorizzata nella cache fino al valore di SECONDS definito.
s-maxage=SECONDS N/A

Una risposta con l'istruzione s-maxage viene memorizzata nella cache fino al valore di SECONDS definito.

Se sono presenti sia max-age che s-maxage, Cloud CDN utilizza s‑maxage.

Le risposte con questa istruzione non vengono fornite se scadute.

s-max-age (due trattini) non è valido ai fini della memorizzazione nella cache.

min-fresh=SECONDS L'istruzione min-fresh della richiesta viene ignorata. Una risposta memorizzata nella cache viene restituita come se questa intestazione non fosse inclusa nella richiesta. N/A
max-stale=SECONDS

L'istruzione max-stale della richiesta stabilisce il valore di mancato aggiornamento massimo (in secondi) che il client è disposto ad accettare.

Cloud CDN rispetta questa istruzione e restituisce una risposta memorizzata nella cache scaduta solo se il tempo di mancato aggiornamento della risposta è inferiore all'istruzione max-stale. In caso contrario, ripete la convalida prima di elaborare la richiesta.

N/A
stale-while-revalidate=SECONDS N/A

Una risposta con stale-while-revalidate viene inviata a un client per un massimo di SECONDS mentre la riconvalida viene eseguita in modo asincrono.

Questo comportamento può essere attivato per tutte le risposte impostando cdnPolicy.serveWhileStale sul backend.

stale-if-error=SECONDS L'istruzione stale-if-error della richiesta viene ignorata. Una risposta memorizzata nella cache viene restituita come se questa intestazione non fosse inclusa nella richiesta.

Questa intestazione della risposta non ha alcun effetto.

must-revalidate N/A

Una risposta con must-revalidate viene riconvalidata con il server di origine dopo la scadenza.

Le risposte con questa istruzione non vengono fornite se scadute.

proxy-revalidate