View a markdown version of this page

Gestione della durata di permanenza dei contenuti nella cache (scadenza) - 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à.

Gestione della durata di permanenza dei contenuti nella cache (scadenza)

Puoi controllare per quanto tempo i tuoi file rimangono nella CloudFront cache prima di CloudFront inoltrare un'altra richiesta all'origine. Riducendo la durata, puoi fornire contenuti dinamici. Aumentando la durata, gli utenti otterranno prestazioni migliori, poiché è più probabile che i file vengano distribuiti direttamente dalla cache edge. Una durata maggiore riduce anche il carico sul server di origine.

In genere, CloudFront serve un file da una posizione periferica fino allo scadere della durata della cache specificata, ovvero fino alla scadenza del file. Dopo la scadenza, la successiva volta che l'edge location riceve una richiesta per il file, CloudFront inoltra la richiesta all'origine per verificare che la cache contenga la versione più recente del file. La risposta dall’origine dipende dall’eventuale modifica del file:

  • Se la CloudFront cache ha già la versione più recente, l'origine restituisce un codice di stato. 304 Not Modified

  • Se la CloudFront cache non dispone della versione più recente, l'origine restituisce un codice di stato 200 OK e l'ultima versione del file.

Se un file in una posizione periferica non viene richiesto di frequente, è CloudFront possibile rimuoverlo (rimuoverlo prima della data di scadenza) per fare spazio ai file che sono stati richiesti più di recente.

Ti consigliamo di gestire la durata della cache aggiornando la policy della cache della distribuzione. Se scegli di non utilizzare una policy della cache, il TTL (Time to Live) predefinito è di 24 ore, ma puoi aggiornare le seguenti impostazioni per sovrascrivere il valore predefinito:

Per ulteriori informazioni su come Minimum TTL (TTL minimo), Default TTL (TTL predefinito) e Maximum TTL (TTL massimo) interagiscono con le direttive max-age e s-maxage e il campo intestazione Expires, consulta Specifica la quantità di tempo per la memorizzazione nella cache degli oggetti CloudFront.

Puoi anche controllare per quanto tempo gli errori (ad esempio404 Not Found) rimangono in una CloudFront cache prima di CloudFront tentare nuovamente di ottenere l'oggetto richiesto inoltrando un'altra richiesta all'origine. Per ulteriori informazioni, consulta Come CloudFront elabora i codici di stato HTTP 4xx e 5xx dall'origine.

Utilizzo delle intestazioni per controllare la durata della cache per i singoli oggetti

Puoi utilizzare le intestazioni Cache-Control e Expires per controllare la durata della permanenza degli oggetti nella cache. Anche le impostazioni per Minimum TTL (TTL minimo), Default TTL (TTL predefinito) e Maximum TTL (TTL massimo) influiscono sulla durata della cache, ma qui di seguito trovi una panoramica su come le intestazioni abbiano un impatto sulla durata della cache:

  • Con la Cache-Control max-age direttiva, potete specificare per quanto tempo (in secondi) volete che un oggetto rimanga nella cache prima di CloudFront recuperarlo nuovamente dal server di origine. Il tempo di scadenza minimo CloudFront supportato è 0 secondi. Il valore massimo è 100 anni. Specifica il valore nel seguente formato:

    Cache-Control: max-age=seconds

    Ad esempio, la seguente direttiva indica CloudFront di mantenere l'oggetto associato nella cache per 3600 secondi (un'ora):

    Cache-Control: max-age=3600

    Se desideri che gli oggetti rimangano nelle cache CloudFront edge per una durata diversa da quella in cui rimangono nelle cache del browser, puoi utilizzare le direttive Cache-Control max-age e Cache-Control s-maxage insieme. Per ulteriori informazioni, consulta Specifica la quantità di tempo per la memorizzazione nella cache degli oggetti CloudFront.

  • Con il campo di Expires intestazione, è possibile specificare una data e un'ora di scadenza utilizzando il formato specificato in RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 Section 3.3.1, Full Date, ad esempio:

    Sat, 27 Jun 2015 23:59:59 GMT

Ti consigliamo di utilizzare la direttiva Cache-Control max-age invece del campo dell’intestazione Expires per controllare la memorizzazione nella cache dell’oggetto. Se specifichi i valori sia per Cache-Control max-age sia per Expires, CloudFront utilizza solo il valore di Cache-Control max-age.

Per ulteriori informazioni, consulta Specifica la quantità di tempo per la memorizzazione nella cache degli oggetti CloudFront.

Non è possibile utilizzare i campi HTTP Cache-Control o di Pragma intestazione in una GET richiesta di un visualizzatore per forzare il ritorno CloudFront al server di origine dell'oggetto. CloudFront ignora i campi di intestazione nelle richieste dei visualizzatori.

Per ulteriori informazioni sui campi di intestazione Cache-Control e di Expires intestazione, vedere le seguenti sezioni in RFC 2616, Hypertext Transfer Protocol --: HTTP/1.1

Fornire contenuti obsoleti (scaduti)

CloudFront supporta le direttive di controllo Stale-If-Error della cache Stale-While-Revalidate e della cache. Puoi utilizzare queste direttive per specificare per quanto tempo i contenuti obsoleti rimangono disponibili per i visualizzatori.

Stale-While-Revalidate

Questa direttiva consente di CloudFront pubblicare contenuti obsoleti dalla cache mentre recupera in modo CloudFront asincrono una nuova versione dall'origine. Ciò migliora la latenza poiché i visualizzatori ricevono risposte immediate dalle posizioni edge senza dover attendere il recupero in background. I nuovi contenuti vengono caricati in background per le richieste future.

Esempio Ad esempio: Stale-While-Revalidate

CloudFront esegue le seguenti operazioni quando si imposta l'Cache-Controlintestazione per utilizzare queste direttive.

Cache-Control: max-age=3600, stale-while-revalidate=600
  1. CloudFront memorizzerà una risposta nella cache per un'ora ()max-age=3600.

  2. Se una richiesta viene effettuata dopo questa durata, CloudFront fornisce il contenuto obsoleto e contemporaneamente invia una richiesta all'origine per riconvalidare e aggiornare il contenuto memorizzato nella cache.

  3. Mentre il contenuto viene riconvalidato, il contenuto non aggiornato viene pubblicato per un massimo di CloudFront 10 minuti (). stale-while-revalidate=600

Nota

CloudFront servirà il contenuto obsoleto fino al valore della stale-while-revalidate direttiva o al valore del TTL CloudFront Maximum TTL (TTL massimo) massimo, a seconda di quale sia inferiore. Dopo la durata massima del TTL, l’oggetto obsoleto non sarà più disponibile dalla cache edge, indipendentemente dal valore stale-while-revalidate.

Stale-If-Error

Questa direttiva consente di CloudFront pubblicare contenuti obsoleti dalla cache se l'origine non è raggiungibile o restituisce un codice di errore compreso tra 500 e 600. Ciò garantisce che gli spettatori possano accedere ai contenuti anche durante un'interruzione dell'origine.

Esempio Ad esempio: Stale-If-Error

CloudFront esegue le seguenti operazioni quando imposti l'Cache-Controlintestazione per utilizzare queste direttive.

Cache-Control: max-age=3600, stale-if-error=86400
  1. CloudFront memorizza la risposta nella cache per un'ora (). max-age=3600

  2. Se l'origine non è attiva o restituisce un errore dopo questa durata, CloudFront continua a pubblicare il contenuto obsoleto per un massimo di 24 ore () stale-if-error=86400

  3. Se hai configurato risposte di errore personalizzate, CloudFront tenterà di pubblicare il contenuto non aggiornato se si verifica un errore entro la durata specificatastale-if-error. Se il contenuto obsoleto non è disponibile, CloudFront verranno visualizzate le risposte di errore personalizzate configurate per il codice di stato dell'errore corrispondente. Per ulteriori informazioni, consulta Generazione di risposte di errore personalizzate.

Note
  • CloudFront servirà il contenuto obsoleto fino al valore della stale-if-error direttiva o al valore del TTL CloudFront massimo, a seconda di quale dei due valori è inferiore. Dopo la durata massima del TTL, l’oggetto obsoleto non sarà più disponibile dalla cache edge, indipendentemente dal valore stale-if-error.

  • Se non configuri stale-if-error o personalizzi le risposte agli errori, CloudFront restituirà l'oggetto obsoleto o inoltrerà la risposta di errore al visualizzatore, a seconda che l'oggetto richiesto sia presente o meno nella cache perimetrale. Per ulteriori informazioni, consulta Come CloudFront elabora gli errori se non hai configurato pagine di errore personalizzate.

Utilizzo di entrambe le direttive

stale-while-revalidate e stale-if-error sono entrambe direttive di controllo della cache indipendenti che possono essere utilizzate insieme per ridurre la latenza e aggiungere un buffer affinché l’origine risponda o venga ripristinata.

Esempio Esempio: utilizzo di entrambe le direttive

CloudFront esegue le seguenti operazioni quando imposti l'Cache-Controlintestazione per utilizzare le seguenti direttive.

Cache-Control: max-age=3600, stale-while-revalidate=600, stale-if-error=86400
  1. CloudFront memorizza la risposta nella cache per un'ora (). max-age=3600

  2. Se una richiesta viene effettuata dopo questa durata, CloudFront fornisce il contenuto obsoleto per un massimo di 10 minuti (stale-while-revalidate=600) mentre il contenuto viene riconvalidato.

  3. Se il server di origine restituisce un errore durante CloudFront i tentativi di riconvalida del contenuto, CloudFront continuerà a pubblicare il contenuto obsoleto per un massimo di 24 ore (). stale-if-error=86400

Il caching è un equilibrio tra prestazioni e dati aggiornati. L’uso di direttive come stale-while-revalidate e stale-if-error può migliorare le prestazioni e l’esperienza utente, ma è necessario assicurarsi che le configurazioni siano in linea con l’aggiornamento desiderato dei contenuti. Le direttive sui contenuti non aggiornati sono più adatte per i casi d’uso in cui i contenuti devono essere aggiornati ma la disponibilità della versione più recente non è essenziale. Inoltre, se i contenuti non cambiano o cambiano raramente, stale-while-revalidate potrebbe aggiungere richieste di rete non necessarie. Prendere invece in considerazione l’impostazione di una lunga durata della cache.

Specifica la quantità di tempo per la memorizzazione nella cache degli oggetti CloudFront

Per controllare il tempo di permanenza CloudFront di un oggetto nella cache prima di inviare un'altra richiesta all'origine, puoi:

  • Imposta i valori TTL minimi, massimi e predefiniti nel comportamento della cache di una CloudFront distribuzione. È possibile impostare questi valori in una policy di cache collegata al comportamento della cache (scelta consigliata) o nelle impostazioni della cache legacy.

  • Includere l’intestazione Cache-Control o Expires nelle risposte dall’origine. Queste intestazioni aiutano anche a determinare per quanto tempo un browser mantiene un oggetto nella cache del browser prima di inviare un'altra richiesta a. CloudFront

Nella tabella seguente viene illustrato come le intestazioni Cache-Control e Expires inviate dall’origine funzionano insieme alle impostazioni TTL in un comportamento di cache per influire sulla memorizzazione nella cache.

Intestazioni di origine TTL minimo = 0 TTL minimo = 0

L’origine aggiunge una direttiva Cache-Control: max-age all’oggetto

CloudFront memorizzazione nella cache

CloudFront memorizza l'oggetto nella cache per il valore minore della Cache-Control: max-age direttiva o il valore del CloudFront TTL massimo.

Caching del browser

I browser memorizzano nella cache l’oggetto per il valore della direttiva Cache-Control: max-age.

CloudFront memorizzazione nella cache

CloudFront il caching dipende dai valori del TTL CloudFront minimo e del TTL massimo e dalla direttiva: Cache-Control max-age

  • Se il TTL minimo è < max-age < il TTL massimo, l'oggetto viene CloudFront memorizzato nella cache per il valore della direttiva. Cache-Control: max-age

  • Se max-age < TTL minimo, CloudFront memorizza nella cache l'oggetto per il valore del TTL minimo. CloudFront

  • Se max-age > TTL massimo, CloudFront memorizza l'oggetto nella cache per il valore del TTL massimo. CloudFront

Caching del browser

I browser memorizzano nella cache l’oggetto per il valore della direttiva Cache-Control: max-age.

L’origine non aggiunge una direttiva Cache-Control: max-age all’oggetto

CloudFront memorizzazione nella cache

CloudFront memorizza nella cache l'oggetto per il valore del TTL CloudFront predefinito.

Caching del browser

Dipende dal browser.

CloudFront memorizzazione nella cache

CloudFront memorizza l'oggetto nella cache per il valore maggiore tra il TTL CloudFront minimo o il TTL predefinito.

Caching del browser

Dipende dal browser.

L’origine aggiunge le direttive Cache-Control: max-age e Cache-Control: s-maxage all’oggetto

CloudFront memorizzazione nella cache

CloudFront memorizza l'oggetto nella cache per il valore minore della Cache-Control: s-maxage direttiva o il valore del CloudFront TTL massimo.

Caching del browser

I browser memorizzano nella cache l’oggetto per il valore della direttiva Cache-Control max-age.

CloudFront memorizzazione nella cache

CloudFront il caching dipende dai valori del TTL CloudFront minimo e del TTL massimo e dalla direttiva: Cache-Control: s-maxage

  • Se il TTL minimo è < s-maxage < il TTL massimo, l'oggetto viene CloudFront memorizzato nella cache per il valore della direttiva. Cache-Control: s-maxage

  • Se s-maxage < TTL minimo, CloudFront memorizza nella cache l'oggetto per il valore del TTL minimo. CloudFront

  • Se s-maxage > TTL massimo, CloudFront memorizza l'oggetto nella cache per il valore del TTL massimo. CloudFront

Caching del browser

I browser memorizzano nella cache l’oggetto per il valore della direttiva Cache-Control: max-age.

L’origine aggiunge un’intestazione Expires all’oggetto

CloudFront memorizzazione nella cache

CloudFront memorizza l'oggetto nella cache fino alla data indicata nell'Expiresintestazione o per il valore del TTL CloudFront massimo, a seconda di quale dei due valori si verifica per primo.

Caching del browser

I browser memorizzano nella cache l’oggetto fino alla data presente nell’intestazione Expires.

CloudFront memorizzazione nella cache

CloudFront la memorizzazione nella cache dipende dai valori del TTL CloudFront minimo e del TTL massimo e dall'intestazione: Expires

  • Se il TTL minimo è < Expires < TTL massimo, l'oggetto viene CloudFront memorizzato nella cache fino alla data e all'ora indicate nell'intestazione. Expires

  • Se Expires < TTL minimo, l'oggetto viene CloudFront memorizzato nella cache per il valore del TTL minimo. CloudFront

  • Se Expires > TTL massimo, CloudFront memorizza l'oggetto nella cache per il valore del TTL massimo. CloudFront

Caching del browser

I browser memorizzano nella cache l’oggetto fino alla data e all’ora presenti nell’intestazione Expires.

Origin aggiunge Cache-Control: no-cache no-store and/or private direttive all'oggetto

CloudFront e i browser rispettano le intestazioni.

CloudFront memorizzazione nella cache

CloudFront memorizza nella cache l'oggetto per il valore del TTL CloudFront minimo. Consulta l’avviso sotto questa tabella.

Caching del browser

I browser rispettano le intestazioni.

avvertimento
  • Se il TTL minimo è maggiore di 0, CloudFront utilizza il TTL minimo della politica di cache, anche se le and/or private direttive, Cache-Control: no-cacheno-store, sono presenti nelle intestazioni di origine.

    • Se l'origine è raggiungibile, CloudFront recupera l'oggetto dall'origine e lo restituisce al visualizzatore.

    • Se l'origine non è raggiungibile e il valore TTL minimo o massimo è maggiore di 0, CloudFront servirà l'oggetto ottenuto dall'origine in precedenza.

    Per evitare questo comportamento, includere la direttiva Cache-Control: stale-if-error=0 con l’oggetto restituito dall’origine. Ciò CloudFront causa la restituzione di un errore in risposta a richieste future se l'origine non è raggiungibile, anziché restituire l'oggetto ottenuto dall'origine in precedenza.

  • CloudFront non memorizza nella cache il codice di stato HTTP 501 (non implementato) da un'origine S3 quando le intestazioni di origine includono le Cache-Control: no-cache direttive,,. no-store and/or private Questo è il comportamento predefinito per un’origine S3, anche se l’impostazione TTL minima è maggiore di 0.

Per informazioni su come modificare le impostazioni per le distribuzioni utilizzando la CloudFront console, vedere. Aggiornamento di una distribuzione Per informazioni su come modificare le impostazioni per le distribuzioni utilizzando l' CloudFront API, consulta. UpdateDistribution

Aggiunta di intestazioni agli oggetti tramite l’utilizzo della console Amazon S3

Puoi aggiungere il campo di intestazione Expires o Cache-Control agli oggetti Amazon S3. Per farlo, è necessario modificare i campi dei metadati dell’oggetto.

Per aggiungere un campo di intestazione Cache-Control or Expires agli oggetti Amazon S3
  1. Segui la procedura nella sezione Sostituzione dei metadati definiti dal sistema nell’argomento Modifica dei metadati degli oggetti nella console Amazon S3 nella Guida per l’utente di Amazon S3.

  2. Per Key, scegli il nome dell'intestazione da aggiungere (Cache-Controlo Expires).

  3. In Value (Valore)immetti un valore di intestazione. Ad esempio, per un’intestazione Cache-Control, è possibile immettere max-age=86400. Per Expires, è possibile inserire una data di scadenza e un’ora ad esempio Wed, 30 Jun 2021 09:28:00 GMT.

  4. Segui il resto della procedura per salvare le modifiche apportate ai metadati.