Comportamento di richieste e risposte per origini personalizzate - 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à.

Comportamento di richieste e risposte per origini personalizzate

In che modo CloudFront elabora e inoltra le richieste all'origine personalizzata

Questo argomento contiene informazioni su come CloudFront elabora le richieste dei visualizzatori e le inoltra all'origine personalizzata.

Autenticazione

PerDELETE,GET, HEADPATCH, e PUT le richiestePOST, se CloudFrontconfiguri l'inoltro dell'Authorizationintestazione all'origine, puoi configurare il server di origine per richiedere l'autenticazione del client.

Per OPTIONS le richieste, puoi configurare il tuo server di origine per richiedere l'autenticazione del client solo se utilizzi le seguenti CloudFront impostazioni:

Puoi CloudFront configurare l'inoltro delle richieste all'origine utilizzando HTTP o HTTPS; per ulteriori informazioni, consultaUtilizzo di HTTPS con CloudFront.

Durata del caching e TTL minimo

Per controllare per quanto tempo gli oggetti rimangono in una CloudFront cache prima di CloudFront inoltrare un'altra richiesta all'origine, puoi:

  • Configurare la tua origine per aggiungere un'intestazione Cache-Control o un campo di intestazione Expires a ogni oggetto.

  • Specificate un valore per Minimum TTL nei comportamenti CloudFront della cache.

  • Utilizzare il valore di default di 24 ore.

Per ulteriori informazioni, consulta Gestione della durata di permanenza dei contenuti nella cache (scadenza).

Indirizzi IP client

Se un visualizzatore invia una richiesta a CloudFront e non include un'intestazione di X-Forwarded-For richiesta, CloudFront ottiene l'indirizzo IP del visualizzatore dalla connessione TCP, aggiunge un'X-Forwarded-Forintestazione che include l'indirizzo IP e inoltra la richiesta all'origine. Ad esempio, se CloudFront ottiene l'indirizzo IP 192.0.2.2 dalla connessione TCP, inoltra la seguente intestazione all'origine:

X-Forwarded-For: 192.0.2.2

Se un visualizzatore invia una richiesta CloudFront e include un'intestazione di X-Forwarded-For richiesta, CloudFront ottiene l'indirizzo IP del visualizzatore dalla connessione TCP, lo aggiunge alla fine dell'X-Forwarded-Forintestazione e inoltra la richiesta all'origine. Ad esempio, se la richiesta del visualizzatore include X-Forwarded-For: 192.0.2.4,192.0.2.3 e CloudFront ottiene l'indirizzo IP 192.0.2.2 dalla connessione TCP, inoltra l'intestazione seguente all'origine:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

Alcune applicazioni, come i sistemi di bilanciamento del carico (incluso Elastic Load Balancing), i firewall per applicazioni Web, i reverse proxy, i sistemi di prevenzione delle intrusioni e l'API Gateway, aggiungono l'indirizzo IP del server perimetrale che ha inoltrato la richiesta alla fine CloudFront dell'intestazione. X-Forwarded-For Ad esempio, se CloudFront include X-Forwarded-For: 192.0.2.2 una richiesta da inoltrare a ELB e se l'indirizzo IP del server CloudFront edge è 192.0.2.199, la richiesta ricevuta dall'istanza EC2 contiene l'intestazione seguente:

X-Forwarded-For: 192.0.2.2,192.0.2.199

Nota

L'intestazione X-Forwarded-For contiene indirizzi IPv4 (ad esempio 192.0.2.44) e IPv6 (ad esempio 2001:0db8:85a3::8a2e:0370:7334).

Si noti inoltre che l'X-Forwarded-Forintestazione può essere modificata da ogni nodo sul percorso del server corrente (). CloudFront Per ulteriori informazioni, consulta la sezione 8.1 di RFC 7239. È inoltre possibile modificare l'intestazione utilizzando le funzioni di CloudFront edge computing.

Autenticazione SSL lato client

CloudFront non supporta l'autenticazione client con certificati SSL lato client. Se un'origine richiede un certificato lato client, elimina la richiesta. CloudFront

Compressione

Per ulteriori informazioni, consulta Distribuzione di file compressi.

Richieste condizionali

Quando CloudFront riceve una richiesta per un oggetto scaduto da una cache edge, inoltra la richiesta all'origine per ottenere la versione più recente dell'oggetto o per ottenere la conferma dall'origine che la cache CloudFront edge ha già la versione più recente. In genere, quando l'origine ha inviato l'oggetto per l'ultima volta CloudFront, nella risposta ETag includeva un LastModified valore, un valore o entrambi i valori. Nella nuova richiesta che CloudFront inoltra all'origine, CloudFront aggiunge uno o entrambi i seguenti elementi:

  • Un'intestazione If-Match o If-None-Match che contiene il valore ETag per la versione scaduta dell'oggetto.

  • Un'intestazione If-Modified-Since che contiene il valore LastModified per la versione scaduta dell'oggetto.

L'origine utilizza queste informazioni per determinare se l'oggetto è stato aggiornato e, quindi, se restituire l'intero oggetto CloudFront o restituire solo un codice di stato HTTP 304 (non modificato).

Cookie

È possibile CloudFront configurare l'inoltro dei cookie alla propria origine. Per ulteriori informazioni, consulta Memorizzazione nella cache di contenuti basati su cookie.

Cross-Origin Resource Sharing (CORS)

Se desideri CloudFront rispettare le impostazioni di condivisione delle risorse tra origini diverse, configura CloudFront l'inoltro dell'Originintestazione all'origine. Per ulteriori informazioni, consulta Memorizzazione nella cache di contenuti in base alle intestazioni di richiesta.

Crittografia

Puoi richiedere ai visualizzatori di utilizzare HTTPS per inviare richieste CloudFront e richiedere di CloudFront inoltrare le richieste all'origine personalizzata utilizzando il protocollo utilizzato dal visualizzatore. Per ulteriori informazioni, vedi le seguenti impostazioni di distribuzione:

CloudFront inoltra le richieste HTTPS al server di origine utilizzando i protocolli SSLv3, TLSv1.0, TLSv1.1 e TLSv1.2. Per le origini personalizzate, puoi scegliere i protocolli SSL che CloudFront deve utilizzare durante la comunicazione con la tua origine:

  • Se utilizzi la CloudFront console, scegli i protocolli utilizzando le caselle di controllo Origin SSL Protocols. Per ulteriori informazioni, consulta Creazione di una distribuzione.

  • Se utilizzi l' CloudFront API, specifica i protocolli utilizzando l'OriginSslProtocolselemento. Per ulteriori informazioni, consulta OriginSslProtocolse DistributionConfignell'Amazon CloudFront API Reference.

Se l'origine è un bucket Amazon S3, utilizza CloudFront sempre TLSv1.2.

Importante

Le altre versioni di SSL e TLS non sono supportate.

Per ulteriori informazioni sull'utilizzo di HTTPS con, consulta. CloudFront Utilizzo di HTTPS con CloudFront Per un elenco dei codici che CloudFront supportano la comunicazione HTTPS tra i visualizzatori e tra l'origine e l'utente CloudFront, CloudFront consulta. Protocolli e cifrari supportati tra visualizzatori e CloudFront

Richieste GET che includono un corpo

Se una GET richiesta del visualizzatore include un corpo, CloudFront restituisce al visualizzatore un codice di stato HTTP 403 (Proibito).

Metodi HTTP

Se configuri CloudFront per elaborare tutti i metodi HTTP che supporta, CloudFront accetta le seguenti richieste dai visualizzatori e le inoltra alla tua origine personalizzata:

  • DELETE

  • GET

  • HEAD

  • OPTIONS

  • PATCH

  • POST

  • PUT

CloudFront memorizza sempre nella cache le risposte e le richieste. GET HEAD È inoltre possibile configurare CloudFront la memorizzazione nella cache delle risposte alle OPTIONS richieste. CloudFront non memorizza nella cache le risposte alle richieste che utilizzano gli altri metodi.

Per ulteriori informazioni sulla configurazione relativa all'elaborazione di questi metodi mediante la tua origine personalizzata, consulta la documentazione relativa alla tua origine.

Importante

Se configuri CloudFront per accettare e inoltrare all'origine tutti i metodi HTTP CloudFront supportati, configura il server di origine per gestire tutti i metodi. Ad esempio, se configuri per accettare e CloudFront inoltrare questi metodi perché desideri utilizzarliPOST, devi configurare il server di origine in modo che gestisca DELETE le richieste in modo appropriato, in modo che gli utenti non possano eliminare le risorse che non desideri. Per ulteriori informazioni, consulta la documentazione relativa al tuo server HTTP.

Intestazioni e CloudFront comportamento delle richieste HTTP (origini personalizzate e Amazon S3)

La tabella che segue elenca le intestazioni di richieste HTTP che è possibile inoltrare alle origini personalizzate e Amazon S3 (con le eccezioni indicate). Per ciascuna intestazione, sono incluse le informazioni seguenti:

  • CloudFront comportamento se non configuri l'intestazione CloudFront per inoltrare l'intestazione all'origine, il che comporta la memorizzazione nella cache degli oggetti in base CloudFront ai valori dell'intestazione.

  • Se è possibile configurare la memorizzazione nella cache degli oggetti in base CloudFront ai valori di intestazione per quell'intestazione.

    Puoi CloudFront configurare la memorizzazione nella cache degli oggetti in base ai valori nelle User-Agent intestazioni Date and, ma non è consigliabile. Queste intestazioni hanno molti valori possibili e la memorizzazione nella cache in base ai loro valori CloudFront comporterebbe l'inoltro di un numero significativamente maggiore di richieste all'origine.

Per ulteriori informazioni sul caching in base ai valori di intestazione, consulta Memorizzazione nella cache di contenuti in base alle intestazioni di richiesta.

Header Comportamento se non configuri la memorizzazione nella cache CloudFront in base ai valori di intestazione Supporto del caching in base ai valori di intestazione

Intestazioni definite da terzi

Impostazioni della cache legacy: CloudFront inoltra le intestazioni all'origine.

Accept

CloudFront rimuove l'intestazione.

Accept-Charset

CloudFront rimuove l'intestazione.

Accept-Encoding

Se il valore contiene gzip obr, CloudFront inoltra un'Accept-Encodingintestazione normalizzata all'origine.

Per ulteriori informazioni, consulta Supporto della compressione e Distribuzione di file compressi.

Accept-Language

CloudFront rimuove l'intestazione.

Authorization

  • GETe HEAD richieste: CloudFront rimuove il campo di Authorization intestazione prima di inoltrare la richiesta all'origine.

  • OPTIONSrichieste: CloudFront rimuove il campo di Authorization intestazione prima di inoltrare la richiesta all'origine se CloudFront configuri la configurazione per memorizzare nella cache le risposte alle richieste. OPTIONS

    CloudFront inoltra il campo di Authorization intestazione all'origine se non si configura per memorizzare nella cache le risposte CloudFront alle richieste OPTIONS.

  • DELETE, PATCHPOST, e PUT richieste: CloudFront non rimuove il campo di intestazione prima di inoltrare la richiesta all'origine.

Cache-Control

CloudFront inoltra l'intestazione alla tua origine.

No

CloudFront-Forwarded-Proto

CloudFront non aggiunge l'intestazione prima di inoltrare la richiesta all'origine.

Per ulteriori informazioni, consulta Configurazione del caching in base al protocollo della richiesta.

CloudFront-Is-Desktop-Viewer

CloudFront non aggiunge l'intestazione prima di inoltrare la richiesta all'origine.

Per ulteriori informazioni, consulta Configurazione del caching in base al tipo di dispositivo.

CloudFront-Is-Mobile-Viewer

CloudFront non aggiunge l'intestazione prima di inoltrare la richiesta all'origine.

Per ulteriori informazioni, consulta Configurazione del caching in base al tipo di dispositivo.

CloudFront-Is-Tablet-Viewer

CloudFront non aggiunge l'intestazione prima di inoltrare la richiesta all'origine.

Per ulteriori informazioni, consulta Configurazione del caching in base al tipo di dispositivo.

CloudFront-Viewer-Country

CloudFront non aggiunge l'intestazione prima di inoltrare la richiesta all'origine.

Connection

CloudFront sostituisce questa intestazione con Connection: Keep-Alive prima di inoltrare la richiesta all'origine.

No

Content-Length

CloudFront inoltra l'intestazione alla tua origine.

No

Content-MD5

CloudFront inoltra l'intestazione alla tua origine.

Content-Type

CloudFront inoltra l'intestazione alla tua origine.

Cookie

Se configuri CloudFront per inoltrare i cookie, inoltrerà il campo di Cookie intestazione alla tua origine. In caso contrario, CloudFront rimuove il campo di Cookie intestazione. Per ulteriori informazioni, consulta Memorizzazione nella cache di contenuti basati su cookie.

No

Date

CloudFront inoltra l'intestazione alla tua origine.

Sì, ma non consigliato

Expect

CloudFront rimuove l'intestazione.

From

CloudFront inoltra l'intestazione alla tua origine.

Host

CloudFront imposta il valore sul nome di dominio dell'origine associato all'oggetto richiesto.

Non puoi memorizzare nella cache in base all'intestazione Host per Amazon S3 MediaStore o sulle origini.

Sì (personalizzata)

No (S3 e) MediaStore

If-Match

CloudFront inoltra l'intestazione alla tua origine.

If-Modified-Since

CloudFront inoltra l'intestazione alla tua origine.

If-None-Match

CloudFront inoltra l'intestazione alla tua origine.

If-Range

CloudFront inoltra l'intestazione alla tua origine.

If-Unmodified-Since

CloudFront inoltra l'intestazione alla tua origine.

Max-Forwards

CloudFront inoltra l'intestazione alla tua origine.

No

Origin

CloudFront inoltra l'intestazione alla tua origine.

Pragma

CloudFront inoltra l'intestazione alla tua origine.

No

Proxy-Authenticate

CloudFront rimuove l'intestazione.

No

Proxy-Authorization

CloudFront rimuove l'intestazione.

No

Proxy-Connection

CloudFront rimuove l'intestazione.

No

Range

CloudFront inoltra l'intestazione alla tua origine. Per ulteriori informazioni, consulta Come CloudFront elabora le richieste parziali per un oggetto (range GETs).

Sì, per impostazione predefinita

Referer

CloudFront rimuove l'intestazione.

Request-Range

CloudFront inoltra l'intestazione alla tua origine.

No

TE

CloudFront rimuove l'intestazione.

No

Trailer

CloudFront rimuove l'intestazione.

No

Transfer-Encoding

CloudFront inoltra l'intestazione alla tua origine.

No

Upgrade

CloudFront rimuove l'intestazione, a meno che tu non abbia stabilito una connessione. WebSocket

No (ad eccezione delle WebSocket connessioni)

User-Agent

CloudFront sostituisce il valore di questo campo di intestazione con. Amazon CloudFront Se desideri CloudFront memorizzare nella cache i contenuti in base al dispositivo utilizzato dall'utente, consulta. Configurazione del caching in base al tipo di dispositivo

Sì, ma non consigliato

Via

CloudFront inoltra l'intestazione all'origine.

Warning

CloudFront inoltra l'intestazione alla tua origine.

X-Amz-Cf-Id

CloudFront aggiunge l'intestazione alla richiesta del visualizzatore prima di inoltrare la richiesta all'origine. Il valore di intestazione contiene una stringa crittografata che identifica in modo univoco la richiesta.

No

X-Edge-*

CloudFront rimuove tutte le intestazioni. X-Edge-*

No

X-Forwarded-For

CloudFront inoltra l'intestazione alla tua origine. Per ulteriori informazioni, consulta Indirizzi IP client.

X-Forwarded-Proto

CloudFront rimuove l'intestazione.

No

X-HTTP-Method-Override

CloudFront rimuove l'intestazione.

X-Real-IP

CloudFront rimuove l'intestazione.

No

Versione HTTP

CloudFront inoltra le richieste all'origine personalizzata utilizzando HTTP/1.1.

Lunghezza massima di una richiesta e lunghezza massima di un URL

La lunghezza massima di una richiesta, inclusi il percorso, l'eventuale stringa di query e le intestazioni, è di 20.480 byte.

CloudFront costruisce un URL dalla richiesta. La lunghezza massima di questo URL è di 8192 byte.

Se una richiesta o un URL supera questi valori massimi, CloudFront restituisce il codice di stato HTTP 413, Request Entity Too Large, al visualizzatore, quindi interrompe la connessione TCP con il visualizzatore.

Stapling OCSP

Quando un visualizzatore invia una richiesta HTTPS per un oggetto, uno dei due CloudFront o il visualizzatore deve confermare con l'autorità di certificazione (CA) che il certificato SSL per il dominio non è stato revocato. OCSP stapling velocizza la convalida dei certificati consentendo di CloudFront convalidare il certificato e di memorizzare nella cache la risposta della CA, in modo che il client non debba convalidare il certificato direttamente con la CA.

Il miglioramento delle prestazioni dello stapling OCSP è più pronunciato quando si CloudFront ricevono numerose richieste HTTPS per oggetti nello stesso dominio. Ogni server in una edge location di CloudFront deve inviare una richiesta di convalida distinta. Quando CloudFront riceve molte richieste HTTPS per lo stesso dominio, ogni server nell'edge location riceve subito una risposta dalla CA che può «pinzare» su un pacchetto nell'handshake SSL; quando l'utente ritiene che il certificato sia valido, CloudFront può servire l'oggetto richiesto. Se la tua distribuzione non riceve molto traffico in una edge location di CloudFront , è più probabile che le nuove richieste siano indirizzate a un server che non ha ancora convalidato il certificato presso la CA. In tal caso, il visualizzatore esegue separatamente la fase di convalida e il server serve l' CloudFront oggetto. Tale CloudFront server invia inoltre una richiesta di convalida alla CA, quindi la prossima volta che riceve una richiesta che include lo stesso nome di dominio, riceve una risposta di convalida dalla CA.

Connessioni persistenti

Quando CloudFront riceve una risposta dall'origine, tenta di mantenere la connessione per diversi secondi nel caso in cui arrivi un'altra richiesta durante quel periodo. Una connessione permanente consente di risparmiare il tempo necessario a ristabilire la connessione TCP e a eseguire un altro handshake TLS per le richieste successive.

Per ulteriori informazioni, incluso il modo in cui configurare la durata delle connessioni permanenti, consulta Timeout keep-alive origine (solo origini personalizzate) in questa sezione Valori da specificare durante la creazione o l'aggiornamento di una distribuzione.

Protocolli

CloudFront inoltra le richieste HTTP o HTTPS al server di origine in base a quanto segue:

  • Il protocollo della richiesta a cui il visualizzatore invia CloudFront, HTTP o HTTPS.

  • Il valore del campo Origin Protocol Policy nella CloudFront console o, se utilizzi l' CloudFront API, l'OriginProtocolPolicyelemento nel tipo DistributionConfig complesso. Nella CloudFront console, le opzioni sono Solo HTTP, Solo HTTPS e Match Viewer.

Se specifichi HTTP Only (Solo HTTP) o HTTPS Only (Solo HTTPS), CloudFront inoltra le richieste al server di origine utilizzando il protocollo specificato, indipendentemente dal protocollo nella richiesta visualizzatore.

Se specifichi Match Viewer, CloudFront inoltra le richieste al server di origine utilizzando il protocollo nella richiesta del visualizzatore. Tieni presente che CloudFront memorizza nella cache l'oggetto solo una volta anche se i visualizzatori effettuano richieste utilizzando entrambi i protocolli HTTP e HTTPS.

Importante

Se CloudFront inoltra una richiesta all'origine utilizzando il protocollo HTTPS e se il server di origine restituisce un certificato non valido o un certificato autofirmato, CloudFront interrompe la connessione TCP.

Per informazioni su come aggiornare una distribuzione utilizzando la console, consulta CloudFront . Aggiornare una distribuzione Per informazioni su come aggiornare una distribuzione utilizzando l' CloudFront API, consulta UpdateDistributionAmazon CloudFront API Reference.

Stringhe di query

Puoi configurare se CloudFront inoltrare i parametri della stringa di query alla tua origine. Per ulteriori informazioni, consulta Memorizzazione nella cache di contenuti basati su parametri delle stringhe di query.

Timeout connessione origine e tentativi

Il timeout della connessione Origin è il numero di secondi che CloudFront attendono quando si tenta di stabilire una connessione all'origine.

I tentativi di connessione all'origine sono il numero di CloudFront tentativi di connessione all'origine.

Insieme, queste impostazioni determinano la durata dei CloudFront tentativi di connessione all'origine prima di passare all'origine secondaria (nel caso di un gruppo di origine) o restituire una risposta di errore al visualizzatore. Per impostazione predefinita, CloudFront attende fino a 30 secondi (3 tentativi da 10 secondi ciascuno) prima di tentare di connettersi all'origine secondaria o restituire una risposta di errore. Puoi ridurre questo tempo specificando un timeout di connessione più breve, un numero inferiore di tentativi o entrambi.

Per ulteriori informazioni, consulta Controllo dei timeout e dei tentativi di origine.

Timeout di risposta dell'origine

Il timeout di risposta origine, noto anche come timeout di lettura origine o timeout di richiesta origine, si applica a entrambi i valori seguenti:

  • La quantità di tempo, in secondi, che CloudFront attende una risposta dopo l'inoltro di una richiesta all'origine.

  • La quantità di tempo, in secondi, che CloudFront attende dopo aver ricevuto un pacchetto di risposta dall'origine e prima di ricevere il pacchetto successivo.

CloudFront il comportamento dipende dal metodo HTTP della richiesta del visualizzatore:

  • GETe HEAD richieste: se l'origine non risponde o smette di rispondere entro la durata del timeout di risposta, CloudFront interrompe la connessione. Se il numero specificato di tentativi di connessione all'origine è superiore a 1, CloudFront riprova per ottenere una risposta completa. CloudFront prova fino a 3 volte, in base al valore dell'impostazione dei tentativi di connessione di origine. Se l'origine non risponde durante l'ultimo tentativo, CloudFront non riprova finché non riceve un'altra richiesta di contenuto sulla stessa origine.

  • DELETE,OPTIONS, PATCHPUT, e POST richieste: se l'origine non risponde entro 30 secondi, CloudFront interrompe la connessione e non riprova a contattare l'origine. Il client può inoltrare nuovamente la richiesta, se necessario.

Per ulteriori informazioni, incluso il modo in cui configurare il timeout di risposta origine, consulta Timeout di risposta (solo origini personalizzate).

Richieste simultanee per lo stesso oggetto (compressione richieste)

Quando una CloudFront edge location riceve una richiesta per un oggetto e l'oggetto non è presente nella cache o l'oggetto memorizzato nella cache è scaduto, invia CloudFront immediatamente la richiesta all'origine. Tuttavia, se ci sono richieste simultanee per lo stesso oggetto, ovvero se richieste aggiuntive per lo stesso oggetto (con la stessa chiave di cache) arrivano all'edge location prima di CloudFront ricevere la risposta alla prima richiesta, si CloudFront interrompe prima di inoltrare le richieste aggiuntive all'origine. Questa breve pausa aiuta a ridurre il carico sull'origine. CloudFront invia la risposta dalla richiesta originale a tutte le richieste ricevute mentre era in pausa. Questa operazione è chiamata compressione richieste. Nei CloudFront log, la prima richiesta viene identificata come una Miss nel x-edge-result-type campo e le richieste compresse vengono identificate come a. Hit Per ulteriori informazioni sui CloudFront log, vedere. CloudFront e registrazione delle funzioni edge

CloudFront comprime solo le richieste che condividono una chiave di cache. Se le richieste aggiuntive non condividono la stessa chiave di cache perché, ad esempio, hai configurato la cache in base CloudFront alle intestazioni delle richieste o ai cookie o alle stringhe di query, CloudFront inoltra tutte le richieste con una chiave di cache univoca all'origine.

Se desideri evitare che tutte le richieste vengano compresse, puoi utilizzare la policy di cache gestitaCachingDisabled, che impedisce anche la memorizzazione nella cache. Per ulteriori informazioni, consulta Utilizzo delle policy della cache gestite.

Se si desidera evitare la compressione delle richieste per oggetti specifici, è possibile impostare il TTL minimo per il comportamento della cache su 0 e configurare l'origine in modo che invii Cache-Control: private,Cache-Control: no-store, Cache-Control: no-cache, Cache-Control: max-age=0 o Cache-Control: s-maxage=0. Queste configurazioni aumenteranno il carico sull'origine e introdurranno una latenza aggiuntiva per le richieste simultanee che vengono messe in pausa durante l' CloudFront attesa della risposta alla prima richiesta.

User-Agent Intestazione

Se desideri CloudFront memorizzare nella cache diverse versioni dei tuoi oggetti in base al dispositivo utilizzato dall'utente per visualizzare i tuoi contenuti, ti consigliamo di configurare CloudFront l'inoltro di una o più delle seguenti intestazioni all'origine personalizzata:

  • CloudFront-Is-Desktop-Viewer

  • CloudFront-Is-Mobile-Viewer

  • CloudFront-Is-SmartTV-Viewer

  • CloudFront-Is-Tablet-Viewer

In base al valore dell'User-Agentintestazione, CloudFront imposta il valore di queste intestazioni su true o false prima di inoltrare la richiesta all'origine. Se il dispositivo ricade in più di una categoria, allora più di un valore potrebbe essere true. Ad esempio, per alcuni tablet, CloudFront potrebbe impostare entrambi e su. CloudFront-Is-Mobile-Viewer CloudFront-Is-Tablet-Viewer true Per ulteriori informazioni sulla configurazione della cache CloudFront in base alle intestazioni delle richieste, consulta. Memorizzazione nella cache di contenuti in base alle intestazioni di richiesta

Puoi CloudFront configurare la memorizzazione nella cache degli oggetti in base ai valori nell'User-Agentintestazione, ma non è consigliabile. L'User-Agentintestazione ha molti valori possibili e la memorizzazione nella cache basata su tali valori CloudFront comporterebbe l'inoltro di un numero significativamente maggiore di richieste all'origine.

Se non configuri CloudFront per memorizzare nella cache gli oggetti in base ai valori dell'User-Agentintestazione, CloudFront aggiunge un'User-Agentintestazione con il seguente valore prima di inoltrare una richiesta all'origine:

User-Agent = Amazon CloudFront

CloudFront aggiunge questa intestazione indipendentemente dal fatto che la richiesta del visualizzatore includa un'intestazione. User-Agent Se la richiesta del visualizzatore include un'User-Agentintestazione, CloudFront la rimuove.

In che modo CloudFront elabora le risposte dalla tua origine personalizzata

Questo argomento contiene informazioni su come CloudFront elabora le risposte dall'origine personalizzata.

Risposte 100 Continue

La tua origine non può inviare più di una risposta 100-Continue a. CloudFront Dopo la prima risposta 100-Continue, CloudFront si aspetta una risposta HTTP 200 OK. Se Origin invia un'altra risposta 100-Continue dopo la prima, CloudFront restituirà un errore.

Caching

Richieste annullate

Se un oggetto non si trova nella cache edge e se un visualizzatore termina una sessione (ad esempio, chiude un browser) dopo aver CloudFront recuperato l'oggetto dall'origine ma prima che possa consegnare l'oggetto richiesto, CloudFront non memorizza l'oggetto nella cache dell'edge location.

Negoziazione di contenuto

Se la tua origine ritorna Vary:* nella risposta e se il valore di Minimum TTL per il comportamento della cache corrispondente è 0, CloudFront memorizza l'oggetto nella cache ma inoltra comunque ogni richiesta successiva dell'oggetto all'origine per confermare che la cache contiene la versione più recente dell'oggetto. CloudFront non include intestazioni condizionali, come o. If-None-Match If-Modified-Since Di conseguenza, la tua origine restituisce l'oggetto a CloudFront in risposta a ogni richiesta.

Se la tua origine ritorna Vary:* nella risposta e se il valore di Minimum TTL per il comportamento della cache corrispondente è qualsiasi altro valore, CloudFront elabora l'Varyintestazione come descritto in. Intestazioni di risposta HTTP che CloudFront rimuovono o sostituiscono

Cookie

Se abiliti i cookie per un comportamento nella cache e se l'origine restituisce i cookie con un oggetto, CloudFront memorizza nella cache sia l'oggetto che i cookie. Nota che ciò riduce la capacità di memorizzazione nella cache per un oggetto. Per ulteriori informazioni, consulta Memorizzazione nella cache di contenuti basati su cookie.

Connessioni TCP interrotte

Se la connessione TCP tra CloudFront e l'origine si interrompe mentre l'origine restituisce un oggetto CloudFront, CloudFront il comportamento dipende dal fatto che l'origine abbia incluso un'Content-Lengthintestazione nella risposta:

  • Intestazione Content-Length: CloudFront restituisce l'oggetto al visualizzatore non appena quest'ultimo lo riceve dall'origine. Tuttavia, se il valore dell'intestazione Content-Length non corrisponde alla dimensione dell'oggetto, CloudFront non memorizza l'oggetto nella cache.

  • Transfer-Encoding: Chunked: CloudFront restituisce l'oggetto al visualizzatore man mano che lo ottiene dall'origine. Tuttavia, se la risposta suddivisa in blocchi non è completa, l'oggetto non viene memorizzato nella cache. CloudFront

  • Nessuna intestazione Content-Length: CloudFront restituisce l'oggetto al visualizzatore e lo memorizza nella cache, ma l'oggetto potrebbe non essere completo. Senza un'Content-Lengthintestazione, CloudFront non è possibile determinare se la connessione TCP è stata interrotta accidentalmente o intenzionalmente.

Si consiglia di configurare il server HTTP per aggiungere un'Content-Lengthintestazione per CloudFront impedire la memorizzazione nella cache di oggetti parziali.

Intestazioni di risposta HTTP che CloudFront rimuovono o sostituiscono

CloudFront rimuove o aggiorna i seguenti campi di intestazione prima di inoltrare la risposta dall'origine al visualizzatore:

  • Set-Cookie— Se configuri CloudFront per inoltrare i cookie, inoltrerà il campo di Set-Cookie intestazione ai client. Per ulteriori informazioni, consulta Memorizzazione nella cache di contenuti basati su cookie.

  • Trailer

  • Transfer-Encoding— Se la tua origine restituisce questo campo di intestazione, CloudFront imposta il valore su chunked prima di restituire la risposta allo spettatore.

  • Upgrade

  • Vary - Tieni presente quanto segue:

    • Se configuri CloudFront per inoltrare qualsiasi intestazione specifica del dispositivo all'origine (CloudFront-Is-Desktop-Viewer,, CloudFront-Is-Mobile-ViewerCloudFront-Is-SmartTV-Viewer,CloudFront-Is-Tablet-Viewer) e configuri l'origine per tornare a CloudFront, CloudFront ritorna Vary:User-Agent al visualizzatore. Vary:User-Agent Per ulteriori informazioni, consulta Configurazione del caching in base al tipo di dispositivo.

    • Se configuri l'origine per includere una delle due Accept-Encoding o Cookie nell'Varyintestazione, CloudFront include i valori nella risposta al visualizzatore.

    • Se configuri CloudFront per inoltrare le intestazioni all'origine e se configuri l'origine per restituire i nomi delle intestazioni CloudFront nell'Varyintestazione (ad esempio,Vary:Accept-Charset,Accept-Language), CloudFront restituisce l'Varyintestazione con quei valori al visualizzatore.

    • Per informazioni su come CloudFront elabora un valore di * nell'intestazione, consultaVary. Negoziazione di contenuto

    • Se configuri l'origine per includere altri valori nell'Varyintestazione, CloudFront rimuove i valori prima di restituire la risposta al visualizzatore.

  • Via— CloudFront imposta il valore seguente nella risposta al visualizzatore:

    Via: http-version alphanumeric-string.cloudfront.net (CloudFront)

    Ad esempio, se il client invia una richiesta su HTTP/1.1, il valore è simile al seguente:

    Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

Dimensione massima del file memorizzabile nella cache

La dimensione massima di un corpo di risposta che viene CloudFront salvato nella cache è di 50 GB. Questa dimensione include risposte di trasferimento in blocchi che non specificano il valore di intestazione Content-Length.

È possibile utilizzare CloudFront per memorizzare nella cache un oggetto di dimensioni maggiori di tali dimensioni utilizzando le richieste di intervallo per richiedere gli oggetti in parti di dimensioni pari o inferiori a 50 GB ciascuna. CloudFrontmemorizza nella cache queste parti perché ognuna di esse pesa 50 GB o meno. Dopo che il visualizzatore ha recuperato tutte le parti dell'oggetto, può ricostruire l'oggetto originale più grande. Per ulteriori informazioni, consulta Utilizzare richieste di intervallo per memorizzare nella cache oggetti di grandi dimensioni.

Origine non disponibile

Se il server di origine non è disponibile e CloudFront riceve una richiesta per un oggetto che si trova nella cache edge ma che è scaduto (ad esempio, perché è trascorso il periodo di tempo specificato nella Cache-Control max-age direttiva), CloudFront fornisce la versione scaduta dell'oggetto o visualizza una pagina di errore personalizzata. Per ulteriori informazioni sul comportamento di CloudFront quando hai configurato pagine di errore personalizzate, consulta In che modo CloudFront elabora gli errori quando sono state configurate pagine di errore personalizzate.

In alcuni casi, un oggetto che viene richiesto raramente viene eliminato e non è più disponibile nella cache edge. CloudFront non può servire un oggetto che è stato sfrattato.

Reindirizzamenti

Se modifichi la posizione di un oggetto nel server di origine, puoi configurare il tuo server Web per reindirizzare le richieste alla nuova posizione. Dopo aver configurato il reindirizzamento, la prima volta che un visualizzatore invia una richiesta per l'oggetto, CloudFront Front invia la richiesta all'origine e l'origine risponde con un reindirizzamento (ad esempio,). 302 Moved Temporarily CloudFront memorizza nella cache il reindirizzamento e lo restituisce al visualizzatore. CloudFront non segue il reindirizzamento.

Puoi configurare il server Web per reindirizzare le richieste a una delle seguenti posizioni:

  • Il nuovo URL dell'oggetto sul server di origine. Quando il visualizzatore segue il reindirizzamento al nuovo URL, lo ignora CloudFront e passa direttamente all'origine. Di conseguenza, ti consigliamo di non reindirizzare le richieste al nuovo URL dell'oggetto sull'origine.

  • Il nuovo CloudFront URL per l'oggetto. Quando il visualizzatore invia la richiesta che contiene il nuovo CloudFront URL, CloudFront ottiene l'oggetto dalla nuova posizione sull'origine, lo memorizza nella cache nella posizione periferica e restituisce l'oggetto al visualizzatore. Le richieste successive per l'oggetto saranno servite dalla edge location. In questo modo, si evita la latenza e il carico associati ai visualizzatori che richiedono l'oggetto dall'origine. Tuttavia, ogni nuova richiesta per l'oggetto comporta spese per due richieste a CloudFront.

Transfer-Encoding Intestazione

CloudFront supporta solo il chunked valore dell'intestazione. Transfer-Encoding Se l'origine viene restituitaTransfer-Encoding: chunked, CloudFront restituisce l'oggetto al client non appena l'oggetto viene ricevuto nell'edge location e memorizza l'oggetto nella cache in formato a blocchi per le richieste successive.

Se il visualizzatore effettua una Range GET richiesta e l'origine viene restituitaTransfer-Encoding: chunked, CloudFront restituisce l'intero oggetto al visualizzatore anziché l'intervallo richiesto.

Ti consigliamo di utilizzare la codifica Chunked se la lunghezza del contenuto della tua risposta non può essere predeterminata. Per ulteriori informazioni, consulta Connessioni TCP interrotte.