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
Per capire come CloudFront elabora le richieste e le risposte quando utilizzi origini personalizzate, consulta le seguenti sezioni:
Argomenti
In che modo CloudFront elabora e inoltra le richieste alla tua origine personalizzata
Scopri come CloudFront elabora le richieste degli spettatori e le inoltra alla tua origine personalizzata.
Indice
Autenticazione
Per inoltrare l’intestazione Authorization all’origine, puoi configurare il server di origine per richiedere l’autenticazione client per i seguenti tipi di richieste:
-
DELETE -
GET -
HEAD -
PATCH -
PUT -
POST
Per OPTIONS le richieste, l'autenticazione del client può essere configurata solo se si utilizzano le seguenti CloudFront impostazioni:
-
CloudFront è configurato per inoltrare l'
Authorizationintestazione all'origine -
CloudFront è configurato per non memorizzare nella cache la risposta alle richieste
OPTIONS
Per ulteriori informazioni, consulta Configura CloudFront per inoltrare l'intestazione Authorization.
Puoi utilizzare HTTP o HTTPS per inoltrare le richieste al server di origine. Per ulteriori informazioni, consulta Usa HTTPS con CloudFront.
Durata del caching e TTL minimo
Per controllare per quanto tempo i tuoi 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-Controlo un campo di intestazioneExpiresa ogni oggetto. -
Specificate un valore per il TTL minimo 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 della 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 la seguente intestazione 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 delle applicazioni Web, i proxy inversi, i sistemi di prevenzione delle intrusioni e l'API Gateway, aggiungono l'indirizzo IP del server CloudFront perimetrale che ha inoltrato la richiesta alla fine dell'intestazione. X-Forwarded-For Ad esempio, se è CloudFront inclusa X-Forwarded-For: 192.0.2.2 in una richiesta che inoltra a ELB e se l'indirizzo IP del server CloudFront perimetrale è 192.0.2.199, la richiesta ricevuta dall'istanza EC2 contiene la seguente intestazione:
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).
Quando analizzi gli indirizzi IPv6 nell'X-Forwarded-Forintestazione, utilizza librerie di analisi degli indirizzi IP standard in grado di gestire qualsiasi formato IPv6 RFC 4291 valido.
Nota 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
Client-side Autenticazione SSL
CloudFront supporta l'autenticazione reciproca TLS (MTLS) in cui sia il client che il server si autenticano reciprocamente tramite certificati. Con gli MTL configurati, CloudFront può convalidare i certificati client durante l'handshake TLS e, facoltativamente, eseguire Funzioni per implementare una logica di convalida personalizzata. CloudFront
Per le origini che richiedono certificati sul lato client quando MTLS non è configurato, elimina la richiesta. CloudFront
Per ulteriori informazioni sulla configurazione degli MTL, vedere. Associare una funzione di CloudFront connessione
CloudFront non supporta l'autenticazione del client con certificati SSL sul lato client. Se un'origine richiede un certificato sul lato client, elimina la richiesta. CloudFront
Compression
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, includeva un ETag valore, un LastModified valore o entrambi i valori nella risposta. Nella nuova richiesta che CloudFront inoltra all'origine, CloudFront aggiunge uno o entrambi i seguenti elementi:
-
Un'intestazione
If-MatchoIf-None-Matchche contiene il valoreETagper la versione scaduta dell'oggetto. -
Un'intestazione
If-Modified-Sinceche contiene il valoreLastModifiedper 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).
Nota
If-Modified-Sincee le richieste If-None-Match condizionali non sono supportate quando CloudFront è configurato per inoltrare i cookie (tutti o un sottoinsieme).
Per ulteriori informazioni, consulta Caching dei contenuti basati su cookie.
Cookie
Puoi configurare CloudFront l'inoltro dei cookie alla tua origine. Per ulteriori informazioni, consulta Caching dei contenuti basati su cookie.
Cross-origin condivisione delle risorse (CORS)
Se desideri CloudFront rispettare le impostazioni di condivisione delle risorse tra origini, configura CloudFront l'inoltro dell'Originintestazione all'origine. Per ulteriori informazioni, consulta Caching dei contenuti in base alle intestazioni di richiesta.
Encryption (Crittografia)
Puoi richiedere agli spettatori di utilizzare HTTPS per inviare richieste CloudFront e CloudFront inoltrare richieste alla tua 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 TLSv1.3 Per le origini personalizzate, puoi scegliere i protocolli SSL che desideri utilizzare CloudFront per comunicare con la tua origine:
-
Se utilizzi la CloudFront console, scegli i protocolli utilizzando le caselle di controllo Protocolli SSL di origine. Per ulteriori informazioni, consulta Creazione di una distribuzione.
-
Se utilizzi l' CloudFront API, specifica i protocolli utilizzando l'
OriginSslProtocolselemento. Per ulteriori informazioni, consulta OriginSslProtocols e DistributionConfig nell'Amazon CloudFront API Reference.
Se l'origine è un bucket Amazon S3, per impostazione predefinita CloudFront sarà. TLSv1.3
Importante
Le altre versioni di SSL e TLS non sono supportate.
Per ulteriori informazioni sull'utilizzo di HTTPS con CloudFront, consulta. Usa HTTPS con CloudFront Per un elenco dei cifrari che CloudFront supportano la comunicazione HTTPS tra gli utenti e tra e la tua origine CloudFront, CloudFront consulta. Protocolli e cifrari supportati tra visualizzatori e CloudFront
Richieste GET che includono un corpo
Se una GET richiesta dello spettatore 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 supportati, 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 Puoi anche configurare CloudFront la 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 in modo da accettare e inoltrare all'origine tutti i metodi HTTP CloudFront supportati, configura il server di origine in modo che gestisca tutti i metodi. Ad esempio, se configuri CloudFront per accettare e inoltrare questi metodi perché li desideri utilizzarePOST, devi configurare il server di origine in modo che gestisca DELETE le richieste in modo appropriato in modo che gli spettatori non possano eliminare risorse indesiderate. 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'inoltro dell'intestazione CloudFront all'origine, con conseguente 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 relativi a tale intestazione.
Puoi CloudFront configurare la memorizzazione nella cache degli oggetti in base ai valori nelle
User-AgentintestazioniDatee, ma non è consigliabile. Queste intestazioni hanno molti valori possibili e la memorizzazione nella cache in base ai loro valori comporterebbe l'inoltro CloudFront di molte più richieste all'origine.
Per ulteriori informazioni sul caching in base ai valori di intestazione, consulta Caching dei contenuti in base alle intestazioni di richiesta.
| Header | Comportamento se non si configura la memorizzazione nella cache CloudFront in base ai valori delle intestazioni | Supporto del caching in base ai valori di intestazione |
|---|---|---|
|
Other-defined intestazioni |
Impostazioni cache precedenti: 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 all'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 all'origine. |
No |
|
|
CloudFront inoltra l'intestazione all'origine. |
Sì |
|
|
CloudFront inoltra l'intestazione all'origine. |
Sì |
|
|
Se CloudFront configuri l'inoltro dei cookie, inoltrerà il campo di |
No |
|
|
CloudFront inoltra l'intestazione all'origine. |
Sì, ma non consigliato |
|
|
CloudFront rimuove l'intestazione. |
Sì |
|
|
CloudFront inoltra l'intestazione all'origine. |
Sì |
|
|
CloudFront imposta il valore sul nome di dominio dell'origine associato all'oggetto richiesto. Non è possibile memorizzare nella cache in base all'intestazione Host per Amazon S3 o MediaStore alle origini. |
Sì (personalizzata) No (S3 e) MediaStore |
|
|
CloudFront inoltra l'intestazione all'origine. |
Sì |
|
|
CloudFront inoltra l'intestazione all'origine. |
Sì |
|
|
CloudFront inoltra l'intestazione all'origine. |
Sì |
|
|
CloudFront inoltra l'intestazione all'origine. |
Sì |
|
|
CloudFront inoltra l'intestazione all'origine. |
Sì |
|
|
CloudFront inoltra l'intestazione all'origine. |
No |
|
|
CloudFront inoltra l'intestazione all'origine. |
Sì |
|
|
CloudFront inoltra l'intestazione all'origine. |
No |
|
|
CloudFront rimuove l'intestazione. |
No |
|
|
CloudFront rimuove l'intestazione. |
No |
|
|
CloudFront rimuove l'intestazione. |
No |
|
|
CloudFront inoltra l'intestazione all'origine. Per ulteriori informazioni, consulta Come CloudFront elabora le richieste parziali per un oggetto (intervallo GETs). |
Sì, per impostazione predefinita |
|
|
CloudFront rimuove l'intestazione. |
Sì |
|
|
CloudFront inoltra l'intestazione all'origine. |
No |
|
|
CloudFront rimuove l'intestazione. |
No |
|
|
CloudFront rimuove l'intestazione. |
No |
|
|
CloudFront inoltra l'intestazione all'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 all'origine. |
Sì |
|
|
CloudFront aggiunge l'intestazione alla richiesta dello spettatore 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 all'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 alla tua 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, la stringa di query (se presente) e le intestazioni, è di 32.768 byte.
CloudFront costruisce un URL dalla richiesta. La lunghezza massima di questo URL è di 8192 byte.
Se un URL supera la lunghezza massima, CloudFront restituisce il codice di stato HTTP 414 (URI Too Long) al visualizzatore. Se una richiesta supera la lunghezza massima perché viene superata la dimensione dell'intestazione, CloudFront restituisce il codice di stato HTTP 494 al visualizzatore. In entrambi i casi, CloudFront quindi interrompe la connessione TCP al visualizzatore.
Stapling OCSP
Quando un visualizzatore invia una richiesta HTTPS per un oggetto, CloudFront oppure deve confermare con l'autorità di certificazione (CA) che il certificato SSL per il dominio non è stato revocato. La pinzatura OCSP velocizza la convalida del certificato 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 di OCSP Stapling è maggiore quando CloudFront riceve numerose richieste HTTPS per oggetti nello stesso dominio. Ogni server in una CloudFront edge location deve inviare una richiesta di convalida separata. Quando CloudFront riceve numerose richieste HTTPS per lo stesso dominio, ogni server nella edge location ottiene rapidamente una risposta dalla CA che può "spillare" a un pacchetto nell'handshake SSL; quando il visualizzatore è sicuro della validità del certificato, CloudFront può servire l'oggetto richiesto. Se la distribuzione non riceve molto traffico in una CloudFront edge location, è più probabile che le nuove richieste vengano indirizzate a un server che non ha ancora convalidato il certificato con la CA. In tal caso, il visualizzatore esegue separatamente la fase di convalida e il CloudFront server serve l'oggetto. Tale CloudFront server invia anche una richiesta di convalida alla CA, quindi la volta successiva 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 Keep-alive timeout (solo origini personalizzate e VPC) in questa sezione Riferimento a tutte le impostazioni di distribuzione.
Protocolli
CloudFront inoltra le richieste HTTP o HTTPS al server di origine in base a quanto segue:
-
Il protocollo della richiesta inviata dal visualizzatore CloudFront, HTTP o HTTPS.
-
Il valore del campo Origin Protocol Policy nella CloudFront console o, se utilizzi l' CloudFront API, l'
OriginProtocolPolicyelemento nel tipoDistributionConfigcomplesso. Nella CloudFront console, le opzioni sono Solo HTTP , Solo HTTPS e Match Viewer.
Se specifichi Solo HTTP o Solo HTTPS, CloudFront inoltra le richieste al server di origine utilizzando il protocollo specificato, indipendentemente dal protocollo nella richiesta del visualizzatore.
Se specifichi Match Viewer, CloudFront inoltra le richieste al server di origine utilizzando il protocollo nella richiesta del visualizzatore. Nota che CloudFront memorizza l'oggetto nella cache una sola 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 tramite la console, consulta CloudFront . Aggiornamento di una distribuzione Per informazioni su come aggiornare una distribuzione utilizzando l' CloudFront API, consulta Amazon CloudFront API Reference. UpdateDistribution
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 di CloudFront attesa 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, di CloudFront attesa di una risposta dopo l'inoltro di una richiesta all'origine.
-
La quantità di tempo, in secondi, che CloudFront attende dopo la ricezione di un pacchetto di risposta dall'origine e prima di ricevere il pacchetto successivo.
CloudFront il comportamento dipende dal metodo HTTP della richiesta del visualizzatore:
-
GETeHEADrichieste: se l'origine non risponde o smette di rispondere entro la durata del timeout di risposta, CloudFront interrompe la connessione. Se il numero di tentativi di connessione di origine specificato è superiore a 1, CloudFront riprova per ottenere una risposta completa. CloudFront tenta fino a 3 volte, a seconda del valore dell'impostazione dei tentativi di connessione di origine. Se l'origine non risponde durante il terzo tentativo, CloudFront non riprova fino a che non riceve un'altra richiesta per il contenuto sulla stessa origine. -
DELETE,OPTIONS,PATCHPUT, ePOSTrichieste: se l'origine non risponde per la durata del timeout di lettura, 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.
Richieste simultanee per lo stesso oggetto (compressione richieste)
Quando una CloudFront edge location riceve una richiesta per un oggetto e l'oggetto non è 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 della richiesta originale a tutte le richieste ricevute mentre era in pausa. Questa operazione è chiamata compressione richieste. Nei CloudFront log, la prima richiesta è identificata come a Miss nel x-edge-result-type campo e le richieste compresse sono identificate come. Hit Per ulteriori informazioni sui CloudFront log, vedereCloudFront 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, ai cookie o alle stringhe di query, CloudFront inoltra tutte le richieste con una chiave di cache univoca all'origine.
Se desideri impedire la compressione di tutte le richieste, puoi utilizzare la policy della cache gestita CachingDisabled, che impedisce anche il caching. Per ulteriori informazioni, consulta Utilizzo delle policy della cache gestite.
Se desideri evitare la compressione delle richieste per oggetti specifici, puoi impostare il TTL minimo per il comportamento 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 da un 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 all'inoltro della richiesta all'origine true o false prima. Se il dispositivo ricade in più di una categoria, allora più di un valore potrebbe essere true. Ad esempio, per alcuni dispositivi tablet, CloudFront potrebbe impostare CloudFront-Is-Mobile-Viewer e CloudFront-Is-Tablet-Viewer su true. Per ulteriori informazioni sulla configurazione della cache in base CloudFront alle intestazioni delle richieste, consulta. Caching dei contenuti in base alle intestazioni di richiesta
È possibile 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 comporterebbe l'inoltro CloudFront di molte più richieste all'origine.
Se non CloudFront configuri la memorizzazione nella cache degli 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 provenienti dalla tua origine personalizzata
Scopri come CloudFront elabora le risposte provenienti dalla tua origine personalizzata.
Indice
100 Continua le risposte
La tua fonte 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 la tua origine 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
DateeLast-Modified. -
CloudFront normalmente rispetta un'
Cache-Control: no-cacheintestazione nella risposta dall'origine. Per un'eccezione, consulta Richieste simultanee per lo stesso oggetto (compressione richieste).
Richieste annullate
Se un oggetto non è nella cache dell'edge e se un visualizzatore termina una sessione (ad esempio, chiude un browser) dopo aver CloudFront ottenuto l'oggetto dall'origine ma prima che possa consegnare l'oggetto richiesto, CloudFront non memorizza l'oggetto nella cache nella posizione edge.
Negoziazione di contenuto
Se l'origine ritorna Vary:* nella risposta e se il valore del TTL minimo per il comportamento della cache corrispondente è 0, memorizza l'oggetto nella CloudFront cache ma inoltra comunque ogni richiesta successiva dell'oggetto all'origine per confermare che la cache contiene l'ultima versione dell'oggetto. CloudFront non include alcuna intestazione condizionale, ad esempio o. If-None-Match If-Modified-Since Di conseguenza, l'origine restituisce l'oggetto a CloudFront in risposta a ogni richiesta.
Se l'origine ritorna Vary:* nella risposta e se il valore di Minimum TTL per il corrispondente comportamento della cache è un 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 di cache e se l'origine restituisce 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 Caching dei contenuti basati su cookie.
Connessioni TCP interrotte
Se la connessione TCP tra CloudFront e l'origine si interrompe mentre l'origine restituisce un oggetto a CloudFront, il CloudFront comportamento dipende dal fatto che l'origine includa o meno un'Content-Lengthintestazione nella risposta:
-
Content-Length header: CloudFront restituisce l'oggetto al visualizzatore man mano che riceve l'oggetto dall'origine. Tuttavia, se il valore dell'
Content-Lengthintestazione non corrisponde alla dimensione dell'oggetto, l'oggetto CloudFront non viene memorizzato nella cache. -
Transfer-Encoding: Chunked: CloudFront restituisce l'oggetto al visualizzatore man mano che riceve l'oggetto dall'origine. Tuttavia, se la risposta in blocchi non è completa, l' CloudFront oggetto non viene memorizzato nella cache.
-
Nessuna Content-Length intestazione: CloudFront restituisce l'oggetto al visualizzatore e lo memorizza nella cache, ma l'oggetto potrebbe non essere completo. Senza un'intestazione
Content-Length, CloudFront non è in grado di determinare se la connessione TCP è stata interrotta per errore o intenzionalmente.
Ti consigliamo di configurare il server HTTP per aggiungere un'Content-Lengthintestazione per evitare la memorizzazione nella cache CloudFront 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 CloudFront configuri l'inoltro dei cookie, inoltrerà il campo diSet-Cookieintestazione ai clienti. Per ulteriori informazioni, consulta Caching dei contenuti basati su cookie. -
Trailer -
Transfer-Encoding— Se l'origine restituisce questo campo di intestazione, CloudFront imposta il valore suchunkedprima di restituire la risposta al visualizzatore. -
Upgrade -
Vary- Tieni presente quanto segue:-
Se configuri CloudFront per inoltrare una qualsiasi delle intestazioni specifiche del dispositivo all'origine (
CloudFront-Is-Desktop-Viewer,,CloudFront-Is-Mobile-ViewerCloudFront-Is-SmartTV-Viewer,CloudFront-Is-Tablet-Viewer) e configuri l'origine a cui ritornare CloudFront, CloudFront ritornaVary:User-Agental visualizzatore.Vary:User-AgentPer ulteriori informazioni, consulta Configurazione del caching in base al tipo di dispositivo. -
Se configuri l'origine in modo da includere
Accept-EncodingoCookienell'Varyintestazione, CloudFront include i valori nella risposta al visualizzatore. -
Se CloudFront configuri l'inoltro delle intestazioni all'origine e se configuri l'origine per restituire i nomi delle intestazioni CloudFront nell'
Varyintestazione (ad esempioVary: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-versionalphanumeric-string.cloudfront.net (CloudFront)Ad esempio, 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 CloudFront salva 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 più grande di questa dimensione utilizzando le richieste di intervallo per richiedere gli oggetti in parti ciascuna di 50 GB o inferiori. CloudFrontmemorizza queste parti nella cache perché ognuna di esse è pari o inferiore a 50 GB. 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 presente nella cache edge ma che è scaduto (ad esempio, perché è trascorso il periodo di tempo specificato nella Cache-Control max-age direttiva), CloudFront visualizza la versione scaduta dell'oggetto o una pagina di errore personalizzata. Per ulteriori informazioni sul CloudFront comportamento quando hai configurato pagine di errore personalizzate, consulta. Come CloudFront elabora gli errori quando hai configurato pagine di errore personalizzate
In alcuni casi, un oggetto che viene richiesto raramente viene rimosso e non è più disponibile nella cache perimetrale. CloudFront non può servire un oggetto che è stato rimosso.
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 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 va 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 recupera l'oggetto dalla nuova posizione sull'origine, lo memorizza nella cache nella posizione periferica e lo restituisce 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 quando l'oggetto viene ricevuto nella posizione periferica 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.