Controllo del tempo in cui CloudFront memorizza gli errori nella cache
CloudFront memorizza nella cache le risposte di errore per una durata predefinita di 10 secondi. CloudFront invia quindi la richiesta successiva per l'oggetto all'origine per verificare se il problema che ha causato l'errore è stato risolto e l'oggetto richiesto è ora disponibile.
Per ogni codice di stato 4xx e 5xx memorizzato nella cache da CloudFront, è possibile specificare la durata della memorizzazione degli errori nella cache, Error Caching Minimum TTL (TTL minimo caching errore). Per ulteriori informazioni, consulta Codici di stato HTTP 4xx e 5xx che CloudFront memorizza nella cache. Quando specifichi una durata, è importante prestare attenzione alle seguenti informazioni:
-
Se si specifica una durata breve di memorizzazione nella cache degli errori, CloudFront inoltra più richieste all'origine rispetto a quando si specifica una durata più lunga. Per gli errori 5xx, questo potrebbe aggravare il problema che ha causato inizialmente l'errore del server di origine.
-
Quando il server di origine restituisce un errore per un oggetto, CloudFront risponde alle richieste per l'oggetto con il messaggio di errore o con la pagina di errore personalizzata fino alla scadenza della durata di memorizzazione nella cache. Se si specifica una durata lunga di memorizzazione degli errori nella cache, CloudFront potrebbe continuare a rispondere alle richieste con un messaggio di errore o con la pagina di errore personalizzata per molto tempo dopo che l'oggetto diventa nuovamente disponibile.
Nota
È possibile creare una pagina di errore personalizzata per il codice di stato HTTP 416 (Impossibile attenersi all'intervallo richiesto) e modificare il codice di stato HTTP che CloudFront restituisce ai visualizzatori quando il server di origine restituisce a CloudFront un codice di stato 416. Per ulteriori informazioni, consulta Modifica dei codici di risposta restituiti da CloudFront. Tuttavia, CloudFront non memorizza nella cache le risposte del codice di stato 416, pertanto, sebbene sia possibile specificare un valore per Error Caching Minimum TTL (TTL minimo di caching degli errori) per il codice di stato 416, CloudFront non lo utilizza.
Per controllare il periodo durante il quale CloudFront memorizza nella cache gli errori per i singoli oggetti, è possibile configurare il server di origine per aggiungere l'intestazione applicabile alla risposta di errore per quell'oggetto.
Se il server di origine aggiunge una direttiva Cache-Control: max-age o Cache-Control:
s-maxage, oppure un'intestazione Expires: CloudFront memorizza nella cache le risposte di errore per il valore maggiore dell'intestazione o Error Caching Minimum TTL (TTL minimo di caching degli errori).
Nota
I valori Cache-Control: max-age e Cache-Control: s-maxage non possono essere maggiori del valore Maximum TTL (TTL massimo) impostato per il comportamento cache per il quale la pagina di errore viene recuperata.
Se il server di origine aggiunge altre direttive Cache-Control o non aggiunge intestazioni: CloudFront memorizza nella cache le risposte di errore per il valore di Error Caching Minimum TTL (TTL minimo di caching degli errori).
Se il periodo di scadenza per un codice di stato 4xx o 5xx per un oggetto è più lungo rispetto a quello che desideri attendere, puoi invalidare il codice di errore memorizzato nella cache utilizzando l'URL dell'oggetto richiesto. Se il server di origine restituisce un messaggio di errore per più oggetti, devi invalidare ogni oggetto separatamente. Per ulteriori informazioni sull'invalidamento degli oggetti, consulta Invalidare i file per rimuovere il contenuto.
Se hai abilitato il caching per un’origine bucket S3 e configuri un TTL minimo di caching degli errori pari a 0 secondi nella distribuzione CloudFront, continuerai a vedere un TTL minimo di caching degli errori di 1 secondo per gli errori di origine S3. Questo comportamento di CloudFront serve a proteggere l’origine dagli attacchi DDoS. Non si applica ad altri tipi di origini.