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
Argomenti
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.
Argomenti
- Autenticazione
- Durata del caching e TTL minimo
- Indirizzi IP client
- Autenticazione SSL lato client
- Compressione
- Richieste condizionali
- Cookie
- Cross-Origin Resource Sharing (CORS)
- Crittografia
- Richieste GET che includono un corpo
- Metodi HTTP
- Intestazioni e CloudFront comportamento delle richieste HTTP (origini personalizzate e Amazon S3)
- Versione HTTP
- Lunghezza massima di una richiesta e lunghezza massima di un URL
- Stapling OCSP
- Connessioni persistenti
- Protocolli
- Stringhe di query
- Timeout connessione origine e tentativi
- Timeout di risposta dell'origine
- Richieste simultanee per lo stesso oggetto (compressione richieste)
- User-Agent Intestazione
Autenticazione
PerDELETE
,GET
, HEAD
PATCH
, 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:
-
Configura CloudFront per inoltrare l'Authorizationintestazione alla tua origine.
-
Configura CloudFront per non memorizzare nella cache la risposta alle
OPTIONS
richieste.
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 intestazioneExpires
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-For
intestazione 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-For
intestazione 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-For
intestazione può essere modificata da ogni nodo sul percorso del server corrente (). CloudFront Per ulteriori informazioni, consulta la sezione 8.1 di RFC 7239
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
oIf-None-Match
che contiene il valoreETag
per la versione scaduta dell'oggetto. -
Un'intestazione
If-Modified-Since
che contiene il valoreLastModified
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'Origin
intestazione 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'
OriginSslProtocols
elemento. 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
intestazioniDate
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. |
Sì |
|
CloudFront rimuove l'intestazione. |
Sì |
|
CloudFront rimuove l'intestazione. |
Sì |
|
Se il valore contiene Per ulteriori informazioni, consulta Supporto della compressione e Distribuzione di file compressi. |
Sì |
|
CloudFront rimuove l'intestazione. |
Sì |
|
|
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
No |
|
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. |
Sì |
|
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. |
Sì |
|
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. |
Sì |
|
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. |
Sì |
|
CloudFront non aggiunge l'intestazione prima di inoltrare la richiesta all'origine. |
Sì |
|
CloudFront sostituisce questa intestazione con |
No |
|
CloudFront inoltra l'intestazione alla tua origine. |
No |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì |
|
Se configuri CloudFront per inoltrare i cookie, inoltrerà il campo di |
No |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì, ma non consigliato |
|
CloudFront rimuove l'intestazione. |
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì |
|
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 |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
No |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
No |
|
CloudFront rimuove l'intestazione. |
No |
|
CloudFront rimuove l'intestazione. |
No |
|
CloudFront rimuove l'intestazione. |
No |
|
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 |
|
CloudFront rimuove l'intestazione. |
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
No |
|
CloudFront rimuove l'intestazione. |
No |
|
CloudFront rimuove l'intestazione. |
No |
|
CloudFront inoltra l'intestazione alla tua origine. |
No |
|
CloudFront rimuove l'intestazione, a meno che tu non abbia stabilito una connessione. WebSocket |
No (ad eccezione delle WebSocket connessioni) |
|
CloudFront sostituisce il valore di questo campo di intestazione con. |
Sì, ma non consigliato |
|
CloudFront inoltra l'intestazione all'origine. |
Sì |
|
CloudFront inoltra l'intestazione alla tua origine. |
Sì |
|
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 |
|
CloudFront rimuove tutte le intestazioni. |
No |
|
CloudFront inoltra l'intestazione alla tua origine. Per ulteriori informazioni, consulta Indirizzi IP client. |
Sì |
|
CloudFront rimuove l'intestazione. |
No |
|
CloudFront rimuove l'intestazione. |
Sì |
|
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'
OriginProtocolPolicy
elemento nel tipoDistributionConfig
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:
-
GET
eHEAD
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
,PATCH
PUT
, ePOST
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-Agent
intestazione, 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-Agent
intestazione, ma non è consigliabile. L'User-Agent
intestazione 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-Agent
intestazione, CloudFront aggiunge un'User-Agent
intestazione 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-Agent
intestazione, 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.
Argomenti
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
-
Accertati che il server di origine imposti valori validi e accurati per i campi di intestazione
Date
eLast-Modified
. -
CloudFront normalmente rispetta un'
Cache-Control: no-cache
intestazione nella risposta dall'origine. Per un'eccezione, consulta Richieste simultanee per lo stesso oggetto (compressione richieste).
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'Vary
intestazione 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-Length
intestazione 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-Length
intestazione, CloudFront non è possibile determinare se la connessione TCP è stata interrotta accidentalmente o intenzionalmente.
Si consiglia di configurare il server HTTP per aggiungere un'Content-Length
intestazione 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 diSet-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 suchunked
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-Viewer
CloudFront-Is-SmartTV-Viewer
,CloudFront-Is-Tablet-Viewer
) e configuri l'origine per tornare a CloudFront, CloudFront ritornaVary: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
oCookie
nell'Vary
intestazione, 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'
Vary
intestazione (ad esempio,Vary:Accept-Charset,Accept-Language
), CloudFront restituisce l'Vary
intestazione 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'
Vary
intestazione, 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.