View a markdown version of this page

Comprensione della chiave della cache - Amazon CloudFront

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Comprensione della chiave della cache

La chiave della cache determina se una richiesta da parte di un visualizzatore a una CloudFront edge location comporta un accesso alla cache. La chiave cache è l'identificatore univoco per un oggetto nella cache. Ogni oggetto nella cache ha una chiave cache univoca.

Un hit della cache si verifica quando una richiesta diel visualizzatore genera la stessa chiave di cache di una richiesta precedente e l'oggetto per tale chiave di cache si trova nella cache della posizione edge ed è valido. Quando si verifica un accesso alla cache, l'oggetto richiesto viene inviato al visualizzatore da una posizione CloudFront periferica, con i seguenti vantaggi:

  • Carico ridotto sul server di origine

  • Latenza ridotta per il visualizzatore

È possibile ottenere prestazioni migliori dal sito Web o dall'applicazione quando si dispone di un rapporto di hit della cache più elevato (una percentuale maggiore di richieste di visualizzatori che si traducono in un hit della cache). Un modo per migliorare il rapporto di accesso alla cache consiste nell'includere solo i valori minimi necessari nella chiave della cache. Per ulteriori informazioni, consultare le sezioni indicate di seguito.

È possibile modificare i valori (stringhe di query URL, intestazioni HTTP e cookie) nella chiave della cache utilizzando una policy della cache. (Puoi anche modificare la chiave della cache utilizzando una Lambda @Edgefunction o una CloudFront Function su richiesta di un visualizzatore). Prima di modificare la chiave della cache, è importante capire come è stata progettata l'applicazione e quando e come potrebbe servire risposte diverse in base alle caratteristiche della richiesta del visualizzatore. Quando un valore nella richiesta del visualizzatore determina la risposta restituita dall'origine, è necessario includere tale valore nella chiave della cache. Ma se includi un valore nella chiave della cache che non influisce sulla risposta restituita dall'origine, potresti finire per memorizzare nella cache oggetti duplicati.

Chiave della cache predefinita

Per impostazione predefinita, la chiave di cache per una CloudFront distribuzione include le seguenti informazioni:

  • Il nome di dominio della CloudFront distribuzione (ad esempio, d111111abcdef8.cloudfront.net)

  • Il percorso URL dell'oggetto richiesto (ad esempio, /content/stories/example-story.html)

Nota

Il metodo OPTIONS è incluso nella chiave cache per le richieste OPTIONS. Ciò significa che le risposte alle richieste OPTIONS vengono memorizzate nella cache separatamente dalle risposte alle richieste GET e HEAD.

Altri valori della richiesta del visualizzatore non sono inclusi nella chiave cache, per impostazione predefinita. Si consideri la seguente richiesta HTTP da un browser Web.

GET /content/stories/example-story.html?ref=0123abc&split-pages=false HTTP/1.1 Host: d111111abcdef8.cloudfront.net User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/68.0 Accept: text/html,*/* Accept-Language: en-US,en Cookie: session_id=01234abcd Referer: https://news.example.com/

Quando una richiesta di visualizzazione come questo esempio arriva in una CloudFront edge location, CloudFront utilizza la chiave cache per determinare se c'è un errore nella cache. Per impostazione predefinita, solo i seguenti componenti della richiesta sono inclusi nella chiave cache: /content/stories/example-story.html e d111111abcdef8.cloudfront.net. Se l'oggetto richiesto non è presente nella cache (cache mancante), CloudFront invia una richiesta all'origine per ottenere l'oggetto. Dopo aver ottenuto l'oggetto, lo CloudFront restituisce al visualizzatore e lo memorizza nella cache della edge location.

Quando CloudFront riceve un'altra richiesta per lo stesso oggetto, come determinato dalla chiave della cache, invia CloudFront immediatamente l'oggetto memorizzato nella cache al visualizzatore, senza inviare una richiesta all'origine. Ad esempio, si consideri la seguente richiesta HTTP che viene dopo la richiesta precedente.

GET /content/stories/example-story.html?ref=xyz987&split-pages=true HTTP/1.1 Host: d111111abcdef8.cloudfront.net User-Agent: Mozilla/5.0 AppleWebKit/537.36 Chrome/83.0.4103.116 Accept: text/html,*/* Accept-Language: en-US,en Cookie: session_id=wxyz9876 Referer: https://rss.news.example.net/

Questa richiesta è per lo stesso oggetto della richiesta precedente, ma è diversa dalla richiesta precedente. Ha una stringa di query URL diversa, diverse intestazioni User-Agent e Referer e un cookie session_id diverso. Tuttavia, nessuno di questi valori fa parte della chiave cache per impostazione predefinita, quindi questa seconda richiesta genera un hit della cache.

Personalizzazione della chiave della cache

In alcuni casi, è possibile includere ulteriori informazioni nella chiave della cache, anche se ciò potrebbe comportare un minor numero di accessi della cache. È possibile specificare cosa includere nella chiave della cache utilizzando una policy della cache.

Ad esempio, se il server di origine utilizza l'intestazione Accept-Language HTTP nelle richieste del visualizzatore per restituire contenuti diversi in base alla lingua del visualizzatore, è possibile includere questa intestazione nella chiave cache. Quando lo fai, CloudFront usa questa intestazione per determinare gli accessi alla cache e include l'intestazione nelle richieste di origine (richieste che vengono CloudFront inviate all'origine in caso di errore nella cache).

Una potenziale conseguenza dell'inclusione di valori aggiuntivi nella chiave di cache è che CloudFront potrebbe finire per memorizzare nella cache oggetti duplicati a causa della variazione che può verificarsi nelle richieste dei visualizzatori. Ad esempio, i visualizzatori potrebbero inviare uno dei seguenti valori per l'intestazione Accept-Language:

  • en-US,en

  • en,en-US

  • en-US, en

  • en-US

Tutti questi valori diversi indicano che la lingua dello spettatore è l'inglese, ma la variazione può causare CloudFront la memorizzazione nella cache dello stesso oggetto più volte. Ciò può ridurre gli accessi della cache e aumentare il numero di richieste di origine. È possibile evitare questa duplicazione non includendo l'intestazione Accept-Language nella chiave cache e configurando invece il sito Web o l'applicazione per utilizzare URL diversi per il contenuto in lingue diverse (ad esempio /en-US/content/stories/example-story.html).

Per qualsiasi valore specificato che si intende includere nella chiave cache, è necessario assicurarsi di comprendere quante diverse varianti di tale valore potrebbero apparire nelle richieste del visualizzatore. Per alcuni valori di richiesta, raramente ha senso includerli nella chiave della cache. Ad esempio, l'intestazione User-Agent può avere migliaia di varianti univoche, quindi in genere non è un buon candidato per l'inclusione nella chiave della cache. I cookie che hanno valori specifici dell'utente o specifici della sessione e sono univoci per migliaia (o addirittura milioni) di richieste non sono buoni candidati per l'inclusione della chiave della cache. Se si includono questi valori nella chiave cache, ogni variazione univoca genera un'altra copia dell'oggetto nella cache. Se queste copie dell'oggetto non sono univoche o se si finisce con un numero così elevato di oggetti leggermente diversi che ogni oggetto ottiene solo un piccolo numero di hit della cache, è possibile considerare un approccio diverso. È possibile escludere questi valori altamente variabili dalla chiave della cache oppure è possibile contrassegnare gli oggetti come non memorizzabili nella cache.

Prestare attenzione quando si personalizza la chiave della cache. A volte è auspicabile, ma può avere conseguenze indesiderate come la memorizzazione nella cache di oggetti duplicati, l'abbassamento del rapporto di accesso alla cache e l'aumento del numero di richieste di origine. A volte il sito Web o l'applicazione di origine richiedono determinati valori provenienti dalle richieste degli spettatori per analisi, telemetria o altri usi, ma tali valori non modificano l'oggetto restituito dall'origine. In questo caso, utilizza una policy di richiesta di origine per includere questi valori nelle richieste di origine ma non includerli nella chiave della cache.