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

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

Puoi controllare per quanto tempo i file rimangono in una cache CloudFront prima che CloudFront inoltri 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 distribuisce un file da un'edge location fino alla scadenza della durata della cache indicata, cioè fino alla scadenza del file. Dopo la scadenza, la volta successiva in cui la edge location riceve una richiesta per il file da parte di un utente, CloudFront inoltra la richiesta al server di origine per verificare che la cache contenga l'ultima versione del file. La risposta dall'origine dipende dall'eventuale modifica del file:

  • Se la cache di CloudFront ha già l'ultima versione, l'origine restituisce il codice di stato 304 Not Modified.

  • Se la cache di CloudFront non ha l'ultima versione, l'origine restituisce un codice di stato 200 OK e l'ultima versione del file.

Se un file in un'edge location non viene richiesto frequentemente, CloudFront potrebbe eliminarlo, cioè cancellarlo prima della sua data di scadenza, per fare spazio a file 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 TTL (TTL minimo), Default TTL (TTL predefinito) e Maximum TTL (TTL massimo) interagiscono con le direttive Cache-Control max-age e Cache-Control s-maxage e il campo intestazione Expires, consulta Specifica l'intervallo di tempo durante il quale CloudFront memorizza nella cache gli oggetti per le distribuzioni web.

Puoi anche controllare per quanto tempo gli errori (ad esempio, 404, Not Found) rimangono nella cache di CloudFront prima che CloudFront provi di nuovo a richiedere l'oggetto inoltrando un'altra richiesta all'origine. Per ulteriori informazioni, consulta Elaborazione e memorizzazione nella cache di codici di stato HTTP 4xx e 5xx restituiti dall'origine mediante CloudFront.

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:

  • La direttiva Cache-Control max-age ti consente di specificare il periodo di tempo (in secondi) durante il quale desideri che un oggetto rimanga nella cache prima che CloudFront ottenga di nuovo l'oggetto dal server di origine. Il periodo di scadenza minimo che CloudFront supporta è pari a 0 secondi per le distribuzioni Web e a 3600 secondi per le distribuzioni RTMP. Il valore massimo è 100 anni. Specifica il valore nel seguente formato:

    Cache-Control: max-age=secondi

    Ad esempio, in base alla seguente direttiva, CloudFront manterrà l'oggetto associato nella cache per 3600 secondi (un'ora):

    Cache-Control: max-age=3600

    Se desideri che gli oggetti rimangano nelle edge cache di CloudFront per una durata diversa rispetto a quella di permanenza nelle cache dei browser, puoi utilizzare le direttive Cache-Control max-age e Cache-Control s-maxage insieme. Per ulteriori informazioni, consulta Specifica l'intervallo di tempo durante il quale CloudFront memorizza nella cache gli oggetti per le distribuzioni web.

  • Il campo intestazione Expires consente di specificare una data di scadenza e un orario utilizzando il formato specificato in RFC 2616, Hypertext Transfer Protocol - HTTP/1.1 Sezione 3.3.1, Data completa, 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 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 l'intervallo di tempo durante il quale CloudFront memorizza nella cache gli oggetti per le distribuzioni web.

Non puoi utilizzare i campi di intestazione Cache-Control o Pragma HTTP in una richiesta GET da un visualizzatore per forzare CloudFront a tornare al server di origine per l'oggetto. CloudFront ignora tali campi di intestazione nelle richieste dei visualizzatori.

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

Per un esempio di come aggiungere i campi di intestazione Cache-Control e Expires utilizzando l'SDK AWS per PHP, consulta Carica un oggetto utilizzando l'SDK AWS per PHP nella Guida per sviluppatori Amazon Simple Storage Service. Alcuni strumenti di terze parti sono in grado di aggiungere questi campi.

Specifica l'intervallo di tempo durante il quale CloudFront memorizza nella cache gli oggetti per le distribuzioni web

Per le distribuzioni Web, puoi utilizzare le intestazioni Cache-Control o Expires e i valori TTL minimo, massimo e predefiniti di CloudFront per controllare l'intervallo di tempo in secondi in cui CloudFront conserva un oggetto nella cache prima di inoltrare un'altra richiesta al server di origine. I valori delle intestazioni inoltre stabiliscono l'intervallo temporale in cui un browser tiene un oggetto nella cache prima di inoltrare un'altra richiesta a CloudFront.

Importante

Se configuri CloudFront per inoltrare tutte le intestazioni all'origine per un comportamento cache, CloudFront non memorizza mai nella cache gli oggetti associati. CloudFront inoltra invece tutte le richieste per quegli oggetti all'origine. In questa configurazione, il valore TTL minimo deve essere 0. Per ulteriori informazioni, consulta Memorizzazione nella cache di contenuti in base alle intestazioni di richiesta.

Per specificare i valori per TTL minimo, TTL massimo e TTL predefinito, devi scegliere l'opzione Customize (Personalizza) per l'impostazione Caching degli oggetti.

Configurazione del server di origine TTL minimo = 0 secondi TTL minimo > 0 secondi

L'origine aggiunge una direttiva Cache-Control max-age agli oggetti

Caching CloudFront

CloudFront memorizza nella cache gli oggetti per il valore minimo della direttiva Cache-Control max-age o per il valore TTL CloudFront massimo.

Caching del browser

I browser memorizzano nella cache gli oggetti per il valore della direttiva Cache-Control max-age.

Caching CloudFront

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

  • TTL minimo < max-age < TTL massimo

    CloudFront memorizza nella cache gli oggetti per il valore della direttiva Cache-Control max-age.

  • max-age < TTL minimo

    CloudFront memorizza nella cache gli oggetti per il valore del TTL minimo CloudFront.

  • max-age > TTL massimo

    CloudFront memorizza nella cache gli oggetti per il valore del TTL massimo CloudFront.

Caching del browser

I browser memorizzano nella cache gli oggetti per il valore della direttiva Cache-Control max-age.

L'origine non aggiunge una direttiva Cache-Control max-age agli oggetti

Caching CloudFront

CloudFront memorizza nella cache gli oggetti per il valore del TTL predefinito CloudFront.

Caching del browser

Dipende dal browser.

Caching CloudFront

CloudFront memorizza nella cache gli oggetti per il valore maggiore del TTL minimo CloudFront o del TTL predefinito.

Caching del browser

Dipende dal browser.

L'origine aggiunge le direttive Cache-Control max-age e Cache-Control s-maxage agli oggetti

Caching CloudFront

CloudFront memorizza nella cache gli oggetti per il valore minimo della direttiva Cache-Control s-maxage o per il valore TTL CloudFront massimo.

Caching del browser

I browser memorizzano nella cache gli oggetti per il valore della direttiva Cache-Control max-age.

Caching CloudFront

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

  • TTL minimo < s-maxage < TTL massimo

    CloudFront memorizza nella cache gli oggetti per il valore della direttiva Cache-Control s-maxage.

  • s-maxage < TTL minimo

    CloudFront memorizza nella cache gli oggetti per il valore del TTL minimo CloudFront.

  • s-maxage > TTL massimo

    CloudFront memorizza nella cache gli oggetti per il valore del TTL massimo CloudFront.

Caching del browser

I browser memorizzano nella cache gli oggetti per il valore della direttiva Cache-Control max-age.

L'origine aggiunge un'intestazione Expires agli oggetti

Caching CloudFront

CloudFront memorizza nella cache gli oggetti fino alla data dell'intestazione Expires o al valore del TTL massimo di CloudFront, a seconda di quale dei due si verifica prima.

Caching del browser

I browser memorizzano nella cache gli oggetti fino alla data presente nell'intestazione Expires.

Caching CloudFront

Il caching di CloudFront dipende dai valori del TTL minimo e TTL massimo CloudFront e dall'intestazione Expires:

  • TTL minimo < Expires < TTL massimo

    CloudFront memorizza nella cache gli oggetti fino alla data e all'ora presenti nell'intestazione Expires.

  • Expires < TTL minimo

    CloudFront memorizza nella cache gli oggetti per il valore del TTL minimo CloudFront.

  • Expires > TTL massimo

    CloudFront memorizza nella cache gli oggetti per il valore del TTL massimo CloudFront.

Caching del browser

I browser memorizzano nella cache gli oggetti fino alla data e all'ora presenti nell'intestazione Expires.

L'origin aggiunge le direttive Cache-Control: no-cache, no-store e/o private agli oggetti

CloudFront e i browser rispettano le intestazioni.

Per un'eccezione sul modo in cui CloudFront gestisce l'intestazione Cache-Control: no-cache, consulta Richieste simultanee per lo stesso oggetto (picchi di traffico).

Caching CloudFront

CloudFront memorizza nella cache gli oggetti per il valore del TTL minimo CloudFront.

Caching del browser

I browser rispettano le intestazioni.

Per informazioni su come modificare le impostazioni per le distribuzioni Web utilizzando la console CloudFront, consulta Aggiornare una distribuzione. Per informazioni su come modificare le impostazioni per le distribuzioni web utilizzando le API CloudFront, consulta Configurazione PUT.

Specifica l'intervallo di tempo minimo durante il quale CloudFront memorizza nella cache gli oggetti per le distribuzioni RTMP

Per le distribuzioni RTMP, CloudFront memorizza gli oggetti nelle edge cache per 24 ore per impostazione predefinita. Puoi aggiungere le intestazioni Cache-Control o Expires agli oggetti per modificare il tempo in CloudFront mantiene gli oggetti nelle edge cache prima di inoltrare un'altra richiesta al server di origine. La durata minima è 3600 secondi (un'ora). Se si specifica un valore inferiore, CloudFront utilizza 3600 secondi.

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

Nota

Utilizzando la console Amazon S3, puoi solo aggiungere le intestazioni a un oggetto alla volta, ma con alcuni strumenti di terze parti, è possibile aggiungere intestazioni a più oggetti Amazon S3 contemporaneamente. Per ulteriori informazioni sugli strumenti di terze parti che supportano Amazon S3, esegui una ricerca nel web su AWS S3 third party tools.

Per aggiungere un campo di intestazione Cache-Control o Expires agli oggetti Amazon S3 utilizzando la console Amazon S3

  1. Accedere alla Console di gestione AWS e aprire la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nella console Amazon S3, nell'elenco Bucket name (Nome bucket) scegliere il nome del bucket che contiene i file.

  3. Nell'elenco Name (Nome), seleziona il nome dell'oggetto al quale desideri aggiungere l'intestazione.

  4. Selezionare Properties (Proprietà), quindi selezionare Metadata (Metadati).

  5. Seleziona Add Metadata (Aggiungi Metadati) e nel menu Key (Chiave) seleziona Cache-Control (Controllo della cache) o Expires (Scade).

  6. Nel campo Value (Valore), digita uno dei seguenti:

    • Nel campo Cache-Control, digita:

      max-age=number of seconds that you want objects to stay in a CloudFront edge cache

    • Nel campo Expires (Scadenze), digita data e ora in formato HTML.

  7. Seleziona Salva.