Come posso ridurre la latenza delle risposte lente di CloudFront?

4 minuti di lettura
0

Riscontro un'elevata latenza quando oggetti o immagini vengono scaricati da Amazon CloudFront. Le richieste che ricevono la risposta "X-Cache:Miss from cloudfront" sono più lente da caricare rispetto alle richieste che ricevono la risposta "X-Cache:Hit from cloudfront". Perché sta succedendo questo? Come posso risolvere questo problema?

Risoluzione

CloudFront restituisce "X-Cache:Miss from cloudfront" quando la richiesta viene inviata all'origine. Restituisce invece "X-Cache:Hit from cloudfront" quando le richieste vengono eseguite dalla posizione edge più vicina. Le richieste “Miss” potrebbero essere più lente da caricare a causa del passaggio aggiuntivo di inoltro all'origine.

Per evitare la latenza dovuta all'inoltro delle richieste all'origine, verifica quanto segue per assicurarti di poter eseguire le richieste dalle posizioni edge di CloudFront:

  • Non inoltrate tutte le intestazioni, tutti i cookie o tutte le stringhe di query, perché in questo modo CloudFront passerà le richieste anziché memorizzarle nella cache.
  • Verifica di disporre di comportamenti di cache separati per i contenuti statici (ad esempio, file CSS) che cambiano raramente e per i contenuti dinamici (ad esempio, file JavaScript) che cambiano spesso. Per i contenuti statici, evita la memorizzazione nella cache basata su cookie, stringhe di query o intestazioni che non sono necessari all'origine per presentare il contenuto.
    Nota: per le distribuzioni Web, CloudFront per impostazione predefinita non considera i cookie quando memorizza oggetti nella cache nelle posizioni edge. Se l’origine restituisce due oggetti che differiscono solo per i valori nell'intestazione Set-Cookie, CloudFront memorizza nella cache solo una versione dell'oggetto.
  • Estendi il TTL minimo, il TTL massimo o il TTL predefinito per i modelli di percorso che richiedono più tempo di memorizzazione nella cache prima che CloudFront interroghi l'origine.
  • Se l’origine utilizza le intestazioni Cache-Control, verifica che le direttive siano coerenti con il TTL minimo, il TTL massimo o il TTL predefinito impostati nella distribuzione.
  • Se l’origine utilizza l'intestazione Expires, verifica che l'intestazione consenta a CloudFront di memorizzare nella cache le risposte in base alle esigenze.
  • Verifica che il server di origine imposti valori validi e accurati per i campi di intestazione Date e Last-Modified.
  • Limita l'uso delle invalidazioni sugli oggetti. Esegui le invalidazioni solo quando necessario.
  • Controlla la frequenza con cui vengono richiesti gli oggetti. Se un oggetto non viene richiesto spesso, CloudFront potrebbe rimuoverlo da una posizione edge.

Se stai eseguendo contenuti dinamici e ti aspetti che le richieste restituiscano risposte "X-Cache:Miss from cloudfront", considera quanto segue per ridurre la latenza senza utilizzare la memorizzazione nella cache:

  • Configura più server di origine geograficamente più vicini ai richiedenti. Quindi, imposta un singolo record DNS di routing basato sulla latenza (ad esempio, origin-latencybased-dnsrecord.example.com) che risolva verso questi server. In CloudFront, configura il nome DNS (ad esempio, origin-latencybased-dnsrecord.example.com) come origine della distribuzione. Questa configurazione consente a CloudFront di recuperare il contenuto dal server di origine con la latenza più bassa, in base alla posizione edge che riceve la richiesta. Se utilizzi Amazon Route 53 come provider DNS, consulta Adding another Region to your latency-based routing in Amazon Route 53.
  • Aumenta il timeout keep-alive per l'origine di CloudFront. Questo valore specifica il periodo di tempo in cui CloudFront mantiene una connessione inattiva con il server di origine prima di chiudere la connessione. Il timeout keep-alive predefinito è di cinque secondi, ma è possibile impostare un valore fino a 60 secondi, se i server di origine lo supportano. Se la distribuzione inoltra le richieste di contenuti dinamici all'origine, aumentare il valore di timeout può contribuire a ridurre la latenza. Questo perché CloudFront non deve creare una nuova connessione per ogni richiesta.
    Nota: a un'origine possono essere assegnati più indirizzi IP. Per utilizzare connessioni persistenti con più indirizzi IP di origine, CloudFront utilizza una velocità e una frequenza delle richieste più elevate. Questo perché le richieste vengono instradate in modalità round-robin attraverso gli indirizzi IP di origine, con connessioni persistenti per ogni indirizzo IP.

Informazioni correlate

Aumento della percentuale di richieste eseguite direttamente dalle cache CloudFront (percentuale di riscontri nella cache)

What information should I give AWS Support for diagnosing CloudFront web distribution latency issues?

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

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

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa