

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)
<a name="Expiration"></a>

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.

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 modificare la durata della cache per tutti i file che corrispondono allo stesso modello di percorso, puoi modificare le CloudFront impostazioni di TTL **minimo, TTL **massimo** e TTL** predefinito per il comportamento della cache.** Per ulteriori informazioni sulle singole impostazioni, consulta [Minimum TTL (TTL minimo)](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMinTTL), [Maximum TTL (TTL massimo)](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMaxTTL) e [Default TTL (TTL di default)](DownloadDistValuesCacheBehavior.md#DownloadDistValuesDefaultTTL).
+ Per modificare la durata della cache per un singolo file, puoi configurare l’origine e aggiungere un’intestazione `Cache-Control` con la direttiva `max-age` o `s-maxage` oppure un’intestazione `Expires` al file. Per ulteriori informazioni, consulta [Utilizzo delle intestazioni per controllare la durata della cache per i singoli oggetti](#expiration-individual-objects).

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 [Specificate la quantità di tempo di memorizzazione degli oggetti nella cache CloudFront](#ExpirationDownloadDist).

Puoi anche controllare per quanto tempo gli errori (ad esempio`404 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 [In che modo CloudFront elabora i codici di stato HTTP 4xx e 5xx dalla tua origine](HTTPStatusCodes.md).

**Topics**
+ [

## Utilizzo delle intestazioni per controllare la durata della cache per i singoli oggetti
](#expiration-individual-objects)
+ [

## Fornire contenuti obsoleti (scaduti)
](#stale-content)
+ [

## Specificate la quantità di tempo di memorizzazione degli oggetti nella cache CloudFront
](#ExpirationDownloadDist)
+ [

## Aggiunta di intestazioni agli oggetti tramite l’utilizzo della console Amazon S3
](#ExpirationAddingHeadersInS3)

## Utilizzo delle intestazioni per controllare la durata della cache per i singoli oggetti
<a name="expiration-individual-objects"></a>

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 `Cache-Control max-age` direttiva consente di specificare per quanto tempo (in secondi) un oggetto deve rimanere 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 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](#ExpirationDownloadDist).
+ 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](https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1), 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 [Specificate la quantità di tempo di memorizzazione degli oggetti nella cache CloudFront](#ExpirationDownloadDist).

Non è possibile utilizzare i campi HTTP `Cache-Control` o di `Pragma` intestazione in una `GET` richiesta di un visualizzatore per CloudFront forzare il ritorno al server di origine dell'oggetto. CloudFront ignora quei 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*: 
+ [Section 14.9 Controllo della cache](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9)
+ [Section 14.21 Scadenze](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21)

## Fornire contenuti obsoleti (scaduti)
<a name="stale-content"></a>

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

**Topics**
+ [

### `Stale-While-Revalidate`
](#stale-while-revalidate)
+ [

### `Stale-If-Error`
](#stale-if-error-only)
+ [

### Utilizzo di entrambe le direttive
](#use-both-stale-directives)

### `Stale-While-Revalidate`
<a name="stale-while-revalidate"></a>

Questa direttiva consente di CloudFront fornire 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.

**Example Ad esempio: `Stale-While-Revalidate`**  
CloudFront esegue quanto segue quando si imposta l'`Cache-Control`intestazione per utilizzare queste direttive.   

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

1. CloudFront memorizzerà nella cache una risposta per un'ora ()`max-age=3600`.

1. Se viene effettuata una richiesta dopo tale periodo, CloudFront serve il contenuto non aggiornato e contemporaneamente invia una richiesta all'origine per riconvalidare e aggiornare il contenuto memorizzato nella cache. 

1. Mentre il contenuto viene riconvalidato, CloudFront serve il contenuto obsoleto per un massimo di 10 minuti (). `stale-while-revalidate=600`

**Nota**  
CloudFront offrirà il contenuto non aggiornato fino al valore della `stale-while-revalidate` direttiva o al valore del [TTL CloudFront massimo, a seconda di quale](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMaxTTL) 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`
<a name="stale-if-error-only"></a>

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 i visualizzatori possano accedere ai contenuti anche durante un’interruzione dell’origine.

**Example Ad esempio: `Stale-If-Error`**  
CloudFront esegue quanto segue quando si imposta l'`Cache-Control`intestazione per utilizzare queste direttive.   

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

1. CloudFront memorizza nella cache la risposta per un'ora (). `max-age=3600`

1. Se l'origine non è attiva o restituisce un errore dopo tale periodo, CloudFront continua a fornire il contenuto non aggiornato per un massimo di 24 ore () `stale-if-error=86400`

1. Se hai configurato risposte di errore personalizzate, CloudFront tenterà di fornire il contenuto non aggiornato se si verifica un errore entro la durata specificata`stale-if-error`. Se il contenuto obsoleto non è disponibile, CloudFront fornirà le risposte di errore personalizzate configurate per il codice di stato dell'errore corrispondente. Per ulteriori informazioni, consulta [Generazione di risposte di errore personalizzate](GeneratingCustomErrorResponses.md).

**Note**  
CloudFront offrirà il contenuto non aggiornato fino al valore della `stale-if-error` direttiva o al valore del [TTL CloudFront massimo](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMaxTTL), 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-if-error`. 
Se non configuri `stale-if-error` o personalizzi le risposte di errore, CloudFront restituirà l'oggetto non aggiornato o inoltrerà la risposta di errore al visualizzatore, a seconda che l'oggetto richiesto si trovi o meno nella cache edge. Per ulteriori informazioni, consulta [Come CloudFront elabora gli errori se non hai configurato pagine di errore personalizzate](HTTPStatusCodes.md#HTTPStatusCodes-no-custom-error-pages).

### Utilizzo di entrambe le direttive
<a name="use-both-stale-directives"></a>

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

**Example Esempio: utilizzo di entrambe le direttive**  
CloudFront esegue quanto segue quando si imposta l'`Cache-Control`intestazione 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` 

1. Se viene effettuata una richiesta dopo tale periodo, CloudFront serve il contenuto non aggiornato per un massimo di 10 minuti (`stale-while-revalidate=600`) mentre il contenuto viene riconvalidato. 

1. Se il server di origine restituisce un errore durante il CloudFront tentativo di riconvalidare il contenuto, CloudFront continuerà a fornire il contenuto non aggiornato 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.

## Specificate la quantità di tempo di memorizzazione degli oggetti nella cache CloudFront
<a name="ExpirationDownloadDist"></a>

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 valori TTL minimo, massimo e predefinito nel comportamento della cache di una CloudFront distribuzione. È possibile impostare questi valori in una [policy di cache](controlling-the-cache-key.md) 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

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 nella cache l'oggetto con il valore minore tra il valore 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 la memorizzazione nella cache dipende dai valori del TTL CloudFront minimo e del TTL massimo e dalla direttiva: `Cache-Control max-age` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) **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 nella cache l'oggetto con il valore minore tra il valore 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 la memorizzazione nella cache dipende dai valori del TTL CloudFront minimo e del TTL massimo e dalla direttiva: `Cache-Control: s-maxage` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) **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'`Expires`intestazione o per il valore del TTL CloudFront massimo, a seconda di quale dei due eventi si verifichi 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` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) **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 nella cache l'oggetto per il valore del TTL CloudFront minimo. [Consulta l’avviso sotto questa tabella](#stale-if-error). **Caching del browser** I browser rispettano le intestazioni.  | 

**avvertimento**  
Se il TTL minimo è maggiore di 0, CloudFront utilizza il TTL minimo della policy di cache, anche se le and/or `private` direttive, `Cache-Control: no-cache``no-store`, 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 valore TTL 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.
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](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMinTTL) è maggiore di 0.

Per informazioni su come modificare le impostazioni per le distribuzioni utilizzando la console, consulta CloudFront. [Aggiornamento di una distribuzione](HowToUpdateDistribution.md) Per informazioni su come modificare le impostazioni per le distribuzioni utilizzando l' CloudFront API, consulta. [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)

## Aggiunta di intestazioni agli oggetti tramite l’utilizzo della console Amazon S3
<a name="ExpirationAddingHeadersInS3"></a>

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

**Come aggiungere il campo di intestazione `Expires` o `Cache-Control` 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-object-metadata.html) nella *Guida per l’utente di Amazon S3*.

1. Per **Chiave**, scegli il nome dell’intestazione che stai aggiungendo (**Cache-Control** o **Scadenze**).

1. 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`.

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