Comprendi la 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à.

Comprendi la chiave della cache

La chiave della cache determina se una richiesta del visualizzatore a una CloudFront edge location provoca 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. In caso di accesso alla cache, l'oggetto richiesto viene fornito al visualizzatore da una CloudFront edge location, 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 Lambda @Edgefunction o una CloudFront Function su richiesta del 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 cache predefinita

Per impostazione predefinita, la chiave 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 a una posizione CloudFront periferica, CloudFront utilizza la chiave cache per determinare se c'è un problema 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 (errore nella cache), 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 dell'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.

Personalizza la 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. In tal caso, CloudFront utilizza 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 perdita della cache).

Una potenziale conseguenza dell'inclusione di valori aggiuntivi nella chiave della 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 del visualizzatore è 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'Accept-Languageintestazione nella chiave della cache e configurando invece il sito Web o l'applicazione in modo che utilizzino contenuti diversi in lingue diverse (ad URLs 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. Se il sito Web o l'applicazione di origine deve ricevere determinati valori dalle richieste dei visualizzatori per analisi, telemetria o altri usi, ma questi valori non modificano l'oggetto restituito dall'origine, utilizzare una policy di richiesta origine per includere questi valori nelle richieste di origine ma non includerli nella chiave della cache.