Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Perché la mia distribuzione CloudFront utilizza le impostazioni della cache della mia origine quando configuro il caching degli oggetti personalizzato?
Desidero risolvere il motivo per cui la mia distribuzione Amazon CloudFront utilizza le impostazioni della cache della mia origine quando configuro il caching degli oggetti personalizzato.
Breve descrizione
Quando personalizzi il caching degli oggetti, configuri i valori TTL (Time to Live) predefinito, TTL minimo e TTL massimo.
CloudFront utilizza il seguente comportamento:
- Se l'origine non restituisce un'intestazione di caching, la distribuzione CloudFront utilizza il TTL predefinito.
- Se l'origine restituisce un'intestazione di caching minore del TTL minimo, la distribuzione utilizza il TTL minimo.
- Se l'origine restituisce un'intestazione di caching maggiore del TTL massimo, la distribuzione utilizza il TTL massimo.
Nota: la risposta al client contiene le intestazioni di caching dell'origine anche quando CloudFront memorizza la risposta nella cache in funzione del TTL minimo o del TTL massimo. Tutte le cache private, come un browser o un proxy, possono utilizzare l'intestazione di caching dell'origine.
Se la distribuzione non memorizza nella cache in funzione del valore TTL predefinito, verifica che le intestazioni di caching dell'origine non siano in conflitto.
Risoluzione
Identifica le intestazioni di caching che sono in conflitto
Verifica se le intestazioni di caching dell'origine sono in conflitto con il caching degli oggetti personalizzato della distribuzione.
Il TTL minimo e il TTL predefinito sono impostati su 0, ma sono ancora presenti risultati memorizzati nella cache di CloudFront
Controlla la risposta di CloudFront per verificare se il valore di X-Cache è Hit from cloudfront o RefreshHit from cloudfront:
< HTTP/1.1 200 OK < Content-Type: text/html < Content-Length: 437 < Connection: keep-alive < Date: Sat, 03 Feb 2018 19:26:45 GMT < Last-Modified: Sat, 03 Feb 2018 19:25:24 GMT < ETag: "example12345abcdefghijklmno54321" < Cache-Control: max-age=300, Public < Accept-Ranges: bytes < Server: AmazonS3 < Age: 14 < X-Cache: Hit from cloudfront
Se il valore di X-Cache è Hit from cloudfront o RefreshHit from cloudfront, la richiesta proviene dalla cache della posizione edge. In un hit di aggiornamento, CloudFront riconvalida con l'origine che l'oggetto scaduto non è stato modificato ed esegue l'aggiornamento quando l'oggetto è obsoleto.
Controlla i valori di Cache-Control, Expires e Age nella risposta. Se il valore max-age riportato per Cache-Control è maggiore del corrispondente valore riportato per Age, la risposta memorizzata nella cache proviene dalla cache di CloudFront. Se la data Expires è ancora futura, anche la risposta memorizzata nella cache non è obsoleta. Questo è il comportamento previsto, anche se il percorso del comportamento della cache ha il TTL minimo e il TTL predefinito impostati su 0.
Nota: nell'esempio precedente, il TTL massimo è maggiore di 0. Quando tutti i valori TTL sono impostati su 0, il caching è disattivato.
Il TTL massimo e il TTL predefinito sono maggiori di 0, ma CloudFront presenta alcuni errori
Controlla la risposta di CloudFront per verificare se il valore di X-Cache è Miss from cloudfront:
< HTTP/1.1 200 OK < Content-Type: text/html < Content-Length: 437 < Connection: keep-alive < Date: Sat, 03 Feb 2018 19:26:45 GMT < Last-Modified: Sat, 03 Feb 2018 19:25:24 GMT < ETag: "example12345abcdefghijklmno54321" < Cache-Control: no-cache, no-store < Accept-Ranges: bytes < Server: AmazonS3 < X-Cache: Miss from cloudfront
Se il valore di X-Cache è Miss from cloudfront, la richiesta proviene dall'origine e non dalla cache.
Se il valore di Cache-Control è no-store, l'intestazione indica a CloudFront di non memorizzare nella cache la risposta. Se il valore di Cache-Control è no-cache, l'intestazione indica a CloudFront di verificare l'origine prima di restituire una risposta memorizzata nella cache. Se il valore di Cache-Control è private, CloudFront dovrebbe archiviare la risposta solo in cache private, ad esempio la cache locale di un browser.
Questi comportamenti hanno la precedenza sulle impostazioni del TTL massimo e del TTL predefinito.
Nota: le risposte che non provengono dalla cache non hanno un'intestazione Age.
Negli esempi precedenti, il TTL minimo è impostato su 0. Se il TTL minimo è maggiore di 0, CloudFront memorizza l'oggetto nella cache, anche se la risposta contiene l'indicazione no-cache, no-store o private. Per ulteriori informazioni, consulta Specificate la quantità di tempo di memorizzazione degli oggetti nella cache CloudFront.
CloudFront memorizza nella cache le risposte di errore
CloudFront inoltra le risposte di errore provenienti dall'origine al client e per impostazione predefinita le memorizza nella cache per 10 secondi.
Se la risposta di errore dell'origine contiene un'intestazione Cache-Control, CloudFront memorizza l'errore nella cache con il TTL pertinente anziché i 10 secondi predefiniti.
Per verificare se la risposta di errore proviene dall'origine o da CloudFront, esamina il valore di Server. Per verificare se l'errore è una risposta memorizzata nella cache, verifica se la risposta include l'intestazione Age.
L'esempio seguente è un errore proveniente da un'origine Amazon Simple Storage Service (Amazon S3) che è una risposta memorizzata nella cache:
< HTTP/1.1 403 Forbidden < Content-Type: application/xml < Transfer-Encoding: chunked < Connection: keep-alive < Date: Sat, 03 Feb 2018 21:07:51 GMT < Server: AmazonS3 < Age: 12 < X-Cache: Error from cloudfront
L'esempio seguente è un errore proveniente da CloudFront che non è una risposta memorizzata nella cache:
< HTTP/1.1 403 Forbidden < Server: CloudFront < Date: Sat, 03 Feb 2018 21:14:53 GMT < Content-Type: text/xml < Content-Length: 146 < Connection: keep-alive < X-Cache: Error from cloudfront
Aggiorna l'origine
Dopo aver identificato le intestazioni di caching che hanno la precedenza sul caching degli oggetti personalizzato della distribuzione, aggiorna l'origine.
Completa i seguenti passaggi:
- Identifica dove si trovano le intestazioni nella configurazione del server web.
- Rimuovi le righe in cui sono applicate le intestazioni.
- Riavvia il server.
- Verifica l'origine per accertarti che le intestazioni di caching non siano più restituite nella risposta.
- Esegui un'invalidazione dell'intera distribuzione CloudFront per applicare la modifica.
Informazioni correlate
Contenuto della cache in base alle intestazioni delle richieste
Gestisci la durata della permanenza dei contenuti nella cache (scadenza)
- Argomenti
- Networking & Content Delivery
- Lingua
- Italiano
