Gestisci la durata della 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à.

Gestisci la durata della permanenza dei contenuti nella cache (scadenza)

Puoi controllare per quanto tempo i tuoi file rimangono in una CloudFront cache prima di CloudFront inoltrare un'altra richiesta all'origine. Riducendo la durata, puoi distribuire 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 edge location fino alla scadenza della durata della cache specificata, ovvero fino alla scadenza del file. Dopo la scadenza, la volta successiva 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 ha la versione più recente, l'origine restituisce un codice di stato 200 OK e la versione più recente del file.

Se un file in una edge location non viene richiesto frequentemente, CloudFront potrebbe eliminarlo, ovvero rimuoverlo prima della data di scadenza, per fare spazio ai file che sono stati richiesti più di recente.

Per impostazione predefinita, ogni file scade automaticamente dopo 24 ore, ma puoi modificare il comportamento predefinito in due modi:

Per ulteriori informazioni su come Minimum TTLTTL, Default e Maximum TTL interagiscono con le s-maxage direttive max-age and e il campo di Expires intestazione, vedere. Specificate la quantità di tempo di memorizzazione degli oggetti nella cache CloudFront

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

Utilizzate le 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. Le impostazioni Minimo TTLTTL, Predefinito e Massimo influiscono TTL anche sulla durata della cache, ma ecco una panoramica di come le intestazioni possono influire sulla durata della cache:

  • La Cache-Control max-age direttiva consente di specificare per quanto tempo (in secondi) un oggetto deve rimanere nella cache prima di CloudFront recuperarlo 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 che rimangono nelle cache del browser, puoi usare le direttive Cache-Control max-age and Cache-Control s-maxage insieme. Per ulteriori informazioni, consulta Specificate la quantità di tempo di memorizzazione degli oggetti nella cache CloudFront .

  • Il campo di Expires intestazione consente di specificare una data e un'ora di scadenza utilizzando il formato specificato in RFC2616, Hypertext Transfer Protocol -- HTTP /1.1 Sezione 3.3.1, Full Date, ad esempio:

    Sat, 27 Jun 2015 23:59:59 GMT

È consigliabile utilizzare la direttiva Cache-Control max-age invece del campo dell'intestazione Expires per controllare la memorizzazione nella cache dell'oggetto. Se si specificano valori sia per che perExpires, CloudFront utilizza Cache-Control max-age solo il valore di. Cache-Control max-age

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

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

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

Pubblica contenuti non aggiornati (scaduti)

CloudFront supporta le direttive di controllo Stale-While-Revalidate e Stale-If-Error cache.

  • La stale-while-revalidate direttiva consente di CloudFront fornire contenuti obsoleti dalla cache mentre recupera in modo asincrono una nuova versione dall'origine. Ciò migliora la latenza in quanto gli utenti ricevono le risposte immediatamente dalle CloudFront edge location senza dover attendere il recupero in background e vengono caricati nuovi contenuti in background per le richieste future.

    Nell'esempio seguente, CloudFront memorizza la risposta nella cache per un'ora (). max-age=3600 Se viene effettuata una richiesta dopo questo periodo, CloudFront serve il contenuto non aggiornato inviando contemporaneamente una richiesta all'origine per riconvalidare e aggiornare il contenuto memorizzato nella cache. I contenuti non aggiornati vengono forniti per un massimo di 10 minuti (stale-while-revalidate=600) mentre i contenuti vengono riconvalidati.

    Cache-Control: max-age=3600, stale-while-revalidate=600
    Nota

    CloudFront servirà il contenuto obsoleto fino al valore della stale-while-revalidate direttiva o al valore massimo, a seconda di quale sia inferiore. CloudFront TTL

  • La stale-if-error 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 i visualizzatori possano accedere ai contenuti anche durante un'interruzione dell'origine.

    Nell'esempio seguente, CloudFront memorizza nella cache la risposta per un'ora (). max-age=3600 Se l'origine non è attiva o restituisce un errore dopo questo periodo, CloudFront continua a fornire il contenuto non aggiornato per un massimo di 24 ore ()stale-if-error=86400.

    Cache-Control: max-age=3600, stale-if-error=86400
    Nota

    CloudFront servirà il contenuto obsoleto fino al valore della stale-if-error direttiva o al valore CloudFront massimoTTL, a seconda di quale dei due sia inferiore.

    Quando sono configurate entrambe le risposte di errore stale-if-error e quelle personalizzate, tenta CloudFront innanzitutto di fornire il contenuto non aggiornato se si verifica un errore entro la durata specificata. stale-if-error Se il contenuto obsoleto non è disponibile o ha una stale-if-error durata superiore alla scadenza, CloudFront fornisce le risposte di errore personalizzate configurate per il codice di stato dell'errore corrispondente.

Usali entrambi insieme

stale-while-revalidate e stale-if-error sono 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.

Nell'esempio seguente, CloudFront memorizza nella cache la risposta per un'ora (max-age=3600). Se viene effettuata una richiesta dopo questo periodo, CloudFront serve il contenuto non aggiornato per un massimo di 10 minuti (stale-while-revalidate=600) mentre il contenuto viene riconvalidato. Se il server di origine restituisce un errore mentre CloudFront tenta di riconvalidare il contenuto, CloudFront continua a fornire il contenuto non aggiornato per un massimo di 24 ore (). stale-if-error=86400

Cache-Control: max-age=3600, stale-while-revalidate=600, stale-if-error=86400
Suggerimento

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.

Specificate la quantità di tempo di memorizzazione degli oggetti nella cache CloudFront

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

  • Imposta i TTL valori minimo, massimo e predefinito 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 conserva un oggetto nella cache del browser prima di inviare un'altra richiesta a CloudFront.

La tabella seguente spiega come le Expires intestazioni Cache-Control e le intestazioni inviate dall'origine interagiscono con le TTL impostazioni di una cache per influire sulla memorizzazione nella cache.

Intestazioni di origine Minimo = 0 TTL Minimo TTL > 0

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

CloudFront memorizzazione nella cache

CloudFront memorizza nella cache l'oggetto in base al valore minore della Cache-Control: max-age direttiva o al valore massimo. CloudFront TTL

Caching del browser

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

CloudFront memorizzazione nella cache

CloudFront la memorizzazione nella cache dipende dai valori CloudFront minimo TTL e massimo TTL e dalla Cache-Control max-age direttiva:

  • Se minimum TTL < max-age < maximumTTL, CloudFront memorizza nella cache l'oggetto per il valore della Cache-Control: max-age direttiva.

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

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

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 predefinito. CloudFront TTL

Caching del browser

Dipende dal browser.

CloudFront memorizzazione nella cache

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

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 nella cache l'oggetto in base al valore minore della Cache-Control: s-maxage direttiva o al valore massimo. CloudFront TTL

Caching del browser

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

CloudFront memorizzazione nella cache

CloudFront la memorizzazione nella cache dipende dai valori CloudFront minimo TTL e massimo TTL e dalla Cache-Control: s-maxage direttiva:

  • Se minimum TTL < s-maxage < maximumTTL, CloudFront memorizza nella cache l'oggetto per il valore della Cache-Control: s-maxage direttiva.

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

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

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 valore CloudFront massimoTTL, a seconda di quale dei due eventi si verifichi prima.

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 CloudFront minimo TTL e massimo TTL e dall'Expiresintestazione:

  • Se minimum TTL < Expires < maximumTTL, memorizza l'oggetto nella CloudFront cache fino alla data e all'ora indicate nell'intestazione. Expires

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

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

Caching del browser

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

L'origine aggiunge le direttive Cache-Control: no-cache, no-store e/o private all’oggetto

CloudFront e i browser rispettano le intestazioni.

CloudFront memorizzazione nella cache

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

Caching del browser

I browser rispettano le intestazioni.

avvertimento

Se il valore minimo TTL è maggiore di 0, CloudFront utilizza il valore minimo della policy di cacheTTL, anche se le private direttive Cache-Control: no-cacheno-store, e/o sono presenti nelle intestazioni di origine.

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

Se l'origine non è raggiungibile e il TTL valore minimo o massimo è maggiore di 0, CloudFront servirà l'oggetto che ha 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ò fa sì che CloudFront venga restituito un errore in risposta alle richieste future se l'origine non è raggiungibile, anziché restituire l'oggetto ottenuto dall'origine in precedenza.

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 il CloudFront API, vedere. UpdateDistribution

Aggiungi intestazioni ai tuoi oggetti utilizzando la console Amazon S3

Per aggiungere un campo di intestazione Cache-Control o Expires agli oggetti Amazon S3 utilizzando la console Amazon S3
  1. Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nell'elenco dei bucket, scegli il nome del bucket che contiene i file a cui stai aggiungendo le intestazioni.

  3. Seleziona la casella di controllo accanto al nome del file o della cartella a cui stai aggiungendo le intestazioni. Quando aggiungi intestazioni a una cartella, ciò influisce su tutti i file all'interno di quella cartella.

  4. Seleziona Actions (Operazioni), quindi Edit metadata (Modifica metadati).

  5. Nel pannello Add metadata (Aggiungi metadati), effettua le seguenti operazioni:

    1. Seleziona Add metadata (Aggiungi metadati).

    2. In Type (Tipo), seleziona System defined (Definito dal sistema).

    3. Per Key (Chiave), scegli il nome dell'intestazione che stai aggiungendo (Cache-Control o Expires (Scadenze)).

    4. 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.

  6. Nella parte inferiore della pagina, scegli Edit metadata (Modifica metadati).