Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Comportement des demandes et des réponses pour les origines personnalisées
Pour comprendre comment CloudFront traite les demandes et les réponses lorsque vous utilisez des origines personnalisées, consultez les sections suivantes :
Rubriques
Comment CloudFront traite et transmet les demandes à votre point d'origine personnalisé
Découvrez comment CloudFront traite les demandes des visiteurs et les transmet à votre origine personnalisée.
Table des matières
- Authentification
- Durée et durée minimale de la mise en cache TTL
- Adresses IP client
- Authentification côté client SSL
- Compression
- Demandes conditionnelles
- Cookies
- Partage de ressources entre origines () CORS
- Chiffrement
- GETdemandes qui incluent un corps
- HTTPméthodes
- HTTPen-têtes et CloudFront comportement des demandes (personnalisés et origines d'Amazon S3)
- HTTPversion
- Durée maximale d'une demande et longueur maximale d'un URL
- OCSPagrafage
- Connexions persistantes
- Protocoles
- Chaînes de requête
- Délai d’attente et tentatives de connexion à l’origine
- Délai de réponse de l’origine
- Demandes simultanées pour le même objet (réduction des demandes)
- En-tête User-Agent
Authentification
Si vous transférez l'Authorization
en-tête à votre origine, vous pouvez ensuite configurer votre serveur d'origine pour demander l'authentification du client pour les types de demandes suivants :
-
DELETE
-
GET
-
HEAD
-
PATCH
-
PUT
-
POST
Pour les OPTIONS
demandes, l'authentification du client ne peut être configurée que si vous utilisez les CloudFront paramètres suivants :
-
CloudFront est configuré pour transmettre l'
Authorization
en-tête à votre origine -
CloudFront est configuré pour ne pas mettre en cache la réponse aux
OPTIONS
demandes
Pour de plus amples informations, veuillez consulter Configurer CloudFront pour transférer l'Authorizationen-tête.
Vous pouvez utiliser HTTP ou HTTPS transférer des demandes vers votre serveur d'origine. Pour de plus amples informations, veuillez consulter Utilisez le protocole HTTPS avec CloudFront.
Durée et durée minimale de la mise en cache TTL
Pour contrôler la durée pendant laquelle vos objets restent dans CloudFront le cache avant CloudFront de transmettre une autre demande à votre origine, vous pouvez :
-
Configurer votre origine pour ajouter un
Cache-Control
ou un champ d’en-têteExpires
à chaque objet. -
Spécifiez une valeur pour le paramètre Minimum TTL dans les comportements CloudFront du cache.
-
Utiliser la valeur par défaut de 24 heures.
Pour de plus amples informations, veuillez consulter Gérer la durée pendant laquelle le contenu reste dans le cache (expiration).
Adresses IP client
Si un utilisateur envoie une demande CloudFront sans inclure d'en-tête de X-Forwarded-For
demande, CloudFront obtient l'adresse IP du spectateur à partir de la TCP connexion, ajoute un X-Forwarded-For
en-tête incluant l'adresse IP et transmet la demande à l'origine. Par exemple, s'il CloudFront obtient l'adresse IP 192.0.2.2
de la TCP connexion, il transmet l'en-tête suivant à l'origine :
X-Forwarded-For: 192.0.2.2
Si un utilisateur envoie une demande CloudFront et inclut un en-tête de X-Forwarded-For
demande, CloudFront obtient l'adresse IP du spectateur à partir de la TCP connexion, l'ajoute à la fin de l'X-Forwarded-For
en-tête et transmet la demande à l'origine. Par exemple, si la demande du spectateur inclut X-Forwarded-For:
192.0.2.4,192.0.2.3
et CloudFront obtient l'adresse IP 192.0.2.2
de la TCP connexion, elle transmet l'en-tête suivant à l'origine :
X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2
Certaines applications, telles que les équilibreurs de charge (y compris Elastic Load Balancing), les pare-feux d'applications Web, les proxys inverses, les systèmes de prévention des intrusions et API Gateway, ajoutent l'adresse IP du serveur CloudFront périphérique qui a transmis la demande à la fin de l'en-tête. X-Forwarded-For
Par exemple, si elle est CloudFront incluse X-Forwarded-For: 192.0.2.2
dans une demande à laquelle elle est ELB transférée et si l'adresse IP du serveur CloudFront Edge est 192.0.2.199, la demande que reçoit votre EC2 instance contient l'en-tête suivant :
X-Forwarded-For: 192.0.2.2,192.0.2.199
Note
L'X-Forwarded-For
en-tête contient des IPv4 adresses (telles que 192.0.2.44) et des IPv6 adresses (telles que 2001:0 db 8:85 a3 : :8a2e : 0370:7334).
Notez également que l'X-Forwarded-For
en-tête peut être modifié par chaque nœud sur le chemin vers le serveur actuel (CloudFront). Pour plus d'informations, voir la section 8.1 du paragraphe RFC7239
Authentification côté client SSL
CloudFront ne prend pas en charge l'authentification client avec des certificats côté client. SSL Si une origine demande un certificat côté client, elle CloudFront supprime la demande.
Compression
Pour de plus amples informations, veuillez consulter Servir des fichiers compressés.
Demandes conditionnelles
Lorsqu'il CloudFront reçoit une demande pour un objet qui a expiré depuis un cache périphérique, il la transmet à l'origine soit pour obtenir la dernière version de l'objet, soit pour obtenir de l'origine la confirmation que le cache CloudFront périphérique possède déjà la dernière version. Généralement, lorsque l'origine a envoyé l'objet pour la dernière fois CloudFront, elle a inclus une ETag
valeur, une LastModified
valeur ou les deux valeurs dans la réponse. Dans la nouvelle demande transmise CloudFront à l'origine, ajoutez l' CloudFront un des éléments suivants ou les deux :
-
Un en-tête
If-Match
ouIf-None-Match
qui contient la valeurETag
pour la version expirée de l’objet. -
Un en-tête
If-Modified-Since
qui contient la valeurLastModified
pour la version expirée de l’objet.
L'origine utilise ces informations pour déterminer si l'objet a été mis à jour et, par conséquent, s'il convient de renvoyer l'objet entier CloudFront ou de renvoyer uniquement un code d'état HTTP 304 (non modifié).
Note
If-Modified-Since
et les demandes If-None-Match
conditionnelles ne sont pas prises en charge lorsqu'elle CloudFront est configurée pour transférer les cookies (tous ou un sous-ensemble).
Pour de plus amples informations, veuillez consulter Contenu du cache basé sur les cookies.
Cookies
Vous pouvez configurer CloudFront pour transférer les cookies à votre origine. Pour de plus amples informations, veuillez consulter Contenu du cache basé sur les cookies.
Partage de ressources entre origines () CORS
Si vous souhaitez CloudFront respecter les paramètres de partage de ressources entre origines, configurez CloudFront pour transférer l'Origin
en-tête vers votre origine. Pour de plus amples informations, veuillez consulter Contenu du cache basé sur les en-têtes des demandes.
Chiffrement
Vous pouvez demander aux spectateurs HTTPS d'envoyer des demandes CloudFront et de CloudFront transférer les demandes à votre origine personnalisée en utilisant le protocole utilisé par le lecteur. Pour plus d’informations, consultez les paramètres de distribution suivants :
CloudFront transmet les HTTPS demandes au serveur d'origine à l'SSLv3aide des protocoles TLSv1 .0, TLSv1 .1 et TLSv1 .2. Pour les origines personnalisées, vous pouvez choisir les SSL protocoles que vous CloudFront souhaitez utiliser pour communiquer avec votre origine :
-
Si vous utilisez la CloudFront console, choisissez les protocoles en cochant les cases SSLProtocoles d'origine. Pour de plus amples informations, veuillez consulter Créer une distribution.
-
Si vous utilisez le CloudFront API, spécifiez les protocoles à l'aide de l'
OriginSslProtocols
élément. Pour plus d'informations, consultez OriginSslProtocolset consultez DistributionConfigle Amazon CloudFront API Reference.
Si l'origine est un compartiment Amazon S3, CloudFront utilisez toujours TLSv1 .2.
Important
Les autres versions de SSL et ne TLS sont pas prises en charge.
Pour plus d'informations sur l'utilisation HTTPS avec CloudFront, consultezUtilisez le protocole HTTPS avec CloudFront. Pour consulter la liste des chiffrements qui permettent CloudFront la HTTPS communication entre les spectateurs et CloudFront, et entre CloudFront et votre origine, voir. Protocoles et chiffrements pris en charge entre les utilisateurs et CloudFront
GETdemandes qui incluent un corps
Si une GET
demande d'utilisateur inclut un corps, CloudFront renvoie un code d'HTTPétat 403 (Interdit) au spectateur.
HTTPméthodes
Si vous configurez CloudFront pour traiter toutes les HTTP méthodes qu'il prend en charge, CloudFront accepte les demandes suivantes des utilisateurs et les transmet à votre origine personnalisée :
-
DELETE
-
GET
-
HEAD
-
OPTIONS
-
PATCH
-
POST
-
PUT
CloudFront met toujours en cache les réponses GET
et les HEAD
demandes. Vous pouvez également configurer CloudFront pour mettre en cache les réponses aux OPTIONS
demandes. CloudFront ne met pas en cache les réponses aux demandes utilisant les autres méthodes.
Pour plus d’informations sur la façon de configurer si votre origine personnalisée traite ces méthodes, consultez la documentation de votre origine.
Important
Si vous configurez CloudFront pour accepter et transmettre à votre origine toutes les HTTP méthodes prises CloudFront en charge, configurez votre serveur d'origine pour qu'il gère toutes les méthodes. Par exemple, si vous configurez CloudFront pour accepter et transférer ces méthodes parce que vous souhaitez les utiliserPOST
, vous devez configurer votre serveur d'origine pour qu'il gère les DELETE
demandes de manière appropriée afin que les utilisateurs ne puissent pas supprimer les ressources que vous ne souhaitez pas qu'ils suppriment. Pour plus d'informations, consultez la documentation de votre HTTP serveur.
HTTPen-têtes et CloudFront comportement des demandes (personnalisés et origines d'Amazon S3)
Le tableau suivant répertorie les en-têtes de HTTP demande que vous pouvez transférer à la fois vers des sources personnalisées et vers Amazon S3 (avec les exceptions indiquées). Pour chaque en-tête, le tableau comprend des informations sur les points suivants :
-
CloudFront comportement si vous ne configurez pas CloudFront pour transférer l'en-tête vers votre origine, ce qui entraîne la mise en cache CloudFront de vos objets en fonction des valeurs de l'en-tête.
-
Si vous pouvez configurer CloudFront pour mettre en cache des objets en fonction des valeurs d'en-tête de cet en-tête.
Vous pouvez configurer CloudFront pour mettre en cache des objets en fonction des valeurs
User-Agent
des en-têtesDate
et, mais nous ne le recommandons pas. Ces en-têtes ont de nombreuses valeurs possibles, et la mise en cache basée sur leurs valeurs entraînerait le transfert d'un plus grand nombre de demandes CloudFront vers votre origine.
Pour plus d’informations sur la mise en cache selon des valeurs d’en-tête, consultez Contenu du cache basé sur les en-têtes des demandes.
En-tête | Comportement si vous ne configurez pas CloudFront le cache en fonction des valeurs d'en-tête | La mise en cache en fonction de valeurs d’en-tête est prise en charge |
---|---|---|
En-têtes définis par un tiers |
Paramètres de cache existants : CloudFront transmet les en-têtes à votre source. |
Oui |
|
CloudFront supprime l'en-tête. |
Oui |
|
CloudFront supprime l'en-tête. |
Oui |
|
Si la valeur contient Pour plus d’informations, consultez Prise en charge de la compression et Servir des fichiers compressés. |
Oui |
|
CloudFront supprime l'en-tête. |
Oui |
|
|
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Non |
|
CloudFront n'ajoute pas l'en-tête avant de transmettre la demande à votre origine. Pour de plus amples informations, veuillez consulter Configurer la mise en cache en fonction du protocole de la demande. |
Oui |
|
CloudFront n'ajoute pas l'en-tête avant de transmettre la demande à votre origine. Pour de plus amples informations, veuillez consulter Configuration de la mise en cache en fonction du type d'appareil. |
Oui |
|
CloudFront n'ajoute pas l'en-tête avant de transmettre la demande à votre origine. Pour de plus amples informations, veuillez consulter Configuration de la mise en cache en fonction du type d'appareil. |
Oui |
|
CloudFront n'ajoute pas l'en-tête avant de transmettre la demande à votre origine. Pour de plus amples informations, veuillez consulter Configuration de la mise en cache en fonction du type d'appareil. |
Oui |
|
CloudFront n'ajoute pas l'en-tête avant de transmettre la demande à votre origine. |
Oui |
|
CloudFront remplace cet en-tête par |
Non |
|
CloudFront transmet l'en-tête à votre origine. |
Non |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
Si vous configurez CloudFront pour transférer les cookies, le champ d' |
Non |
|
CloudFront transmet l'en-tête à votre origine. |
Oui, mais non recommandé |
|
CloudFront supprime l'en-tête. |
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
CloudFront définit la valeur du nom de domaine de l'origine associé à l'objet demandé. Vous ne pouvez pas mettre en cache en fonction de l'en-tête Host pour Amazon S3 ou MediaStore Origins. |
Oui (personnalisée) Non (S3 et MediaStore) |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Non |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Non |
|
CloudFront supprime l'en-tête. |
Non |
|
CloudFront supprime l'en-tête. |
Non |
|
CloudFront supprime l'en-tête. |
Non |
|
CloudFront transmet l'en-tête à votre origine. Pour de plus amples informations, veuillez consulter Comment CloudFront traite les demandes partielles pour un objet (plageGETs). |
Oui, par défaut |
|
CloudFront supprime l'en-tête. |
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Non |
|
CloudFront supprime l'en-tête. |
Non |
|
CloudFront supprime l'en-tête. |
Non |
|
CloudFront transmet l'en-tête à votre origine. |
Non |
|
CloudFront supprime l'en-tête, sauf si vous avez établi une WebSocket connexion. |
Non (sauf pour les WebSocket connexions) |
|
CloudFront remplace la valeur de ce champ d'en-tête par |
Oui, mais non recommandé |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
CloudFront transmet l'en-tête à votre origine. |
Oui |
|
CloudFront ajoute l'en-tête à la demande du lecteur avant de la transmettre à votre source. La valeur d’en-tête contient une chaîne chiffrée qui identifie de façon unique la demande. |
Non |
|
CloudFront supprime tous les |
Non |
|
CloudFront transmet l'en-tête à votre origine. Pour de plus amples informations, veuillez consulter Adresses IP client. |
Oui |
|
CloudFront supprime l'en-tête. |
Non |
|
CloudFront supprime l'en-tête. |
Oui |
|
CloudFront supprime l'en-tête. |
Non |
HTTPversion
CloudFront transmet les demandes à votre origine personnalisée en utilisant HTTP /1.1.
Durée maximale d'une demande et longueur maximale d'un URL
La longueur maximale d’une demande, avec le chemin, la chaîne de requête (le cas échéant) et les en-têtes inclus, est de 20480 octets.
CloudFront construit un à URL partir de la demande. Sa longueur maximale URL est de 8192 octets.
Si une demande URL dépasse ces maximums, CloudFront renvoie le code d'HTTPétat 413, Request Entity Too Large, au visualiseur, puis met fin à la TCP connexion au visualiseur.
OCSPagrafage
Lorsqu'un utilisateur soumet une HTTPS demande pour un objet, l'un CloudFront ou l'autre doit confirmer auprès de l'autorité de certification (CA) que le SSL certificat du domaine n'a pas été révoqué. OCSPl'agrafage accélère la validation du certificat en permettant de valider le certificat et de CloudFront mettre en cache la réponse de l'autorité de certification, de sorte que le client n'a pas besoin de valider le certificat directement auprès de l'autorité de certification.
L'amélioration des performances de l'OCSPagrafage est plus prononcée lors de la CloudFront réception de nombreuses HTTPS demandes d'objets dans le même domaine. Chaque serveur situé dans un emplacement CloudFront périphérique doit soumettre une demande de validation distincte. Lorsqu'il CloudFront reçoit un grand nombre de HTTPS demandes pour le même domaine, chaque serveur situé à la périphérie reçoit rapidement une réponse de l'autorité de certification lui permettant d' « agrafer » un paquet dans le cadre de la SSL poignée de main ; lorsque le téléspectateur est convaincu que le certificat est valide, il CloudFront peut servir l'objet demandé. Si votre distribution ne reçoit pas beaucoup de trafic dans un emplacement CloudFront périphérique, les nouvelles demandes sont plus susceptibles d'être dirigées vers un serveur qui n'a pas encore validé le certificat auprès de l'autorité de certification. Dans ce cas, le visualiseur exécute séparément l'étape de validation et le CloudFront serveur sert l'objet. Ce CloudFront serveur soumet également une demande de validation à l'autorité de certification. Ainsi, la prochaine fois qu'il recevra une demande contenant le même nom de domaine, il recevra une réponse de validation de la part de l'autorité de certification.
Connexions persistantes
Lorsqu'il CloudFront reçoit une réponse de votre origine, il essaie de maintenir la connexion pendant plusieurs secondes au cas où une autre demande arriverait pendant cette période. Le maintien d'une connexion persistante permet de gagner du temps pour rétablir la TCP connexion et effectuer une nouvelle TLS poignée de main pour les demandes suivantes.
Pour plus d’informations, y compris sur la manière de configurer la durée des connexions persistantes, consultez Délai d'attente des connexions actives (origines personnalisées uniquement) dans la section Référence des paramètres de distribution.
Protocoles
CloudFront transmet HTTP ou HTTPS demande au serveur d'origine sur la base des éléments suivants :
-
Protocole de la demande à laquelle le spectateur envoie CloudFront, HTTP soitHTTPS.
-
La valeur du champ Origin Protocol Policy dans la CloudFront console ou, si vous utilisez le CloudFront API, l'
OriginProtocolPolicy
élément du typeDistributionConfig
complexe. Dans la CloudFront console, les options sont Only, HTTPHTTPSOnly et Match Viewer.
Si vous spécifiez HTTPOnly ou HTTPSOnly, CloudFront transmet les demandes au serveur d'origine en utilisant le protocole spécifié, quel que soit le protocole indiqué dans la demande du visualiseur.
Si vous spécifiez Match Viewer, CloudFront transmet les demandes au serveur d'origine en utilisant le protocole indiqué dans la demande du visualiseur. Notez que l'objet n'est mis en CloudFront cache qu'une seule fois, même si les utilisateurs font des demandes en utilisant à la fois les HTTPS protocoles HTTP et.
Important
Si CloudFront vous transférez une demande à l'origine à l'aide du HTTPS protocole, et si le serveur d'origine renvoie un certificat non valide ou un certificat auto-signé, CloudFront interrompt la TCP connexion.
Pour plus d'informations sur la mise à jour d'une distribution à l'aide de la CloudFront console, consultezMettre à jour une distribution. Pour plus d'informations sur la mise à jour d'une distribution UpdateDistributionà l'aide du CloudFront API, consultez la CloudFront APIréférence Amazon.
Chaînes de requête
Vous pouvez configurer si les paramètres CloudFront de la chaîne de requête sont transmis à votre origine. Pour de plus amples informations, veuillez consulter Contenu du cache basé sur les paramètres de chaîne de requête.
Délai d’attente et tentatives de connexion à l’origine
Le délai d'expiration de la connexion d'origine est le nombre de secondes d' CloudFront attente lorsque vous essayez d'établir une connexion avec l'origine.
Les tentatives de connexion à l'origine correspondent au nombre de CloudFront tentatives de connexion à l'origine.
Ensemble, ces paramètres déterminent la durée des CloudFront tentatives de connexion à l'origine avant de basculer vers l'origine secondaire (dans le cas d'un groupe d'origine) ou de renvoyer une réponse d'erreur au lecteur. Par défaut, CloudFront attend jusqu'à 30 secondes (3 tentatives de 10 secondes chacune) avant de tenter de se connecter à l'origine secondaire ou de renvoyer une réponse d'erreur. Vous pouvez réduire ce délai en spécifiant moins de tentatives, un délai d’attente de connexion plus court, ou les deux.
Pour de plus amples informations, veuillez consulter Contrôlez les délais et les tentatives d'origine.
Délai de réponse de l’origine
Le délai de réponse de l’origine, également appelé délai d’attente des opérations de lecture depuis l’origine ou délai de demande à l’origine, s’applique aux deux valeurs suivantes :
-
Durée, en secondes, d' CloudFront attente d'une réponse après avoir transmis une demande à l'origine.
-
Temps d' CloudFront attente, en secondes, après réception d'un paquet de réponse provenant de l'origine et avant de recevoir le paquet suivant.
CloudFront le comportement dépend de la HTTP méthode de la demande du spectateur :
-
GET
etHEAD
demandes : si l'origine ne répond pas ou cesse de répondre dans le délai imparti, interrompt CloudFront la connexion. Si le nombre spécifié de tentatives de connexion d'origine est supérieur à 1, CloudFront réessaie pour obtenir une réponse complète. CloudFront essaie jusqu'à 3 fois, selon la valeur du paramètre des tentatives de connexion d'origine. Si l'origine ne répond pas lors de la dernière tentative, elle CloudFront ne réessaie pas tant qu'elle n'a pas reçu une autre demande de contenu sur la même origine. -
DELETE
,OPTIONS
,PATCH
PUT
, etPOST
demandes : si l'origine ne répond pas dans les 30 secondes, CloudFront interrompt la connexion et n'essaie pas de la contacter à nouveau. Le client peut soumettre à nouveau la demande si nécessaire.
Pour de plus amples informations, y compris sur la manière de configurer le délai de réponse de l’origine, veuillez consulter Délai de réponse (origines personnalisées uniquement).
Demandes simultanées pour le même objet (réduction des demandes)
Lorsqu'un emplacement CloudFront périphérique reçoit une demande pour un objet et que celui-ci n'est pas dans le cache ou que l'objet mis en cache a expiré, envoie CloudFront immédiatement la demande à l'origine. Toutefois, s'il existe des demandes simultanées pour le même objet, c'est-à-dire si des demandes supplémentaires pour le même objet (avec la même clé de cache) arrivent à l'emplacement périphérique avant de CloudFront recevoir la réponse à la première demande, faites CloudFront une pause avant de transmettre les demandes supplémentaires à l'origine. Cette brève pause permet de réduire la charge sur l'origine. CloudFront envoie la réponse de la demande initiale à toutes les demandes qu'elle a reçues pendant sa pause. Ce processus se nomme la réduction des demandes. Dans CloudFront les journaux, la première demande est identifiée comme étant Miss
dans le x-edge-result-type
champ, et les demandes réduites sont identifiées comme unHit
. Pour plus d'informations sur CloudFront les journaux, consultezCloudFront et journalisation des fonctions Edge.
CloudFront réduit uniquement les demandes qui partagent une clé de cache. Si les demandes supplémentaires ne partagent pas la même clé de cache parce que, par exemple, vous avez configuré CloudFront le cache en fonction des en-têtes de demande, des cookies ou des chaînes de requête, CloudFront transfère toutes les demandes avec une clé de cache unique à votre origine.
Si vous souhaitez empêcher le regroupement de toutes les demandes, vous pouvez utiliser la politique de cache géréCachingDisabled
, qui empêche également la mise en cache. Pour de plus amples informations, veuillez consulter Utiliser des politiques de cache gérées.
Si vous souhaitez empêcher la réduction des demandes pour des objets spécifiques, vous pouvez définir le comportement minimum TTL du cache sur 0 et configurer l'origine à envoyerCache-Control:
private
,Cache-Control: no-store
, Cache-Control:
no-cache
Cache-Control: max-age=0
, ouCache-Control: s-maxage=0
. Ces configurations augmenteront la charge sur votre origine et introduiront une latence supplémentaire pour les demandes simultanées qui sont suspendues pendant l' CloudFront attente de la réponse à la première demande.
Important
Actuellement, la réduction des demandes CloudFront n'est pas prise en charge si vous activez le transfert de cookies dans la politique de cache, la politique de demande d'origine ou les anciens paramètres de cache.
En-tête User-Agent
Si vous souhaitez CloudFront mettre en cache différentes versions de vos objets en fonction de l'appareil utilisé par l'utilisateur pour consulter votre contenu, nous vous recommandons de configurer CloudFront pour transférer un ou plusieurs des en-têtes suivants vers votre origine personnalisée :
-
CloudFront-Is-Desktop-Viewer
-
CloudFront-Is-Mobile-Viewer
-
CloudFront-Is-SmartTV-Viewer
-
CloudFront-Is-Tablet-Viewer
Sur la base de la valeur de l'User-Agent
en-tête, CloudFront définit la valeur de ces en-têtes false
avant true
ou avant le transfert de la demande à votre origine. Si un appareil entre dans plusieurs catégories, plusieurs valeurs peuvent être true
. Par exemple, pour certaines tablettes, CloudFront vous pouvez définir les deux options CloudFront-Is-Mobile-Viewer
et la valeur CloudFront-Is-Tablet-Viewer
surtrue
. Pour plus d'informations sur la configuration CloudFront de la mise en cache en fonction des en-têtes de demande, consultezContenu du cache basé sur les en-têtes des demandes.
Vous pouvez configurer CloudFront pour mettre en cache des objets en fonction des valeurs de l'User-Agent
en-tête, mais nous ne le recommandons pas. L'User-Agent
en-tête comporte de nombreuses valeurs possibles, et la mise en cache basée sur ces valeurs entraînerait le transfert CloudFront d'un plus grand nombre de demandes vers votre origine.
Si vous ne configurez pas CloudFront pour mettre en cache les objets en fonction des valeurs de l'User-Agent
CloudFront User-Agent
en-tête, ajoutez un en-tête avec la valeur suivante avant de transmettre une demande à votre origine :
User-Agent = Amazon CloudFront
CloudFront ajoute cet en-tête, que la demande du visualiseur contienne ou non un User-Agent
en-tête. Si la demande du visualiseur inclut un User-Agent
en-tête, CloudFront supprimez-le.
Comment CloudFront traite les réponses provenant de votre origine personnalisée
Découvrez comment CloudFront traite les réponses provenant de votre origine personnalisée.
Table des matières
Réponses 100 Continue
Votre origine ne peut pas envoyer plus d'une réponse de type 100-Continue à CloudFront. Après la première réponse 100-Continue, CloudFront attend une réponse de HTTP 200 OK. Si votre origine envoie une autre réponse 100-Continue après la première, elle CloudFront renverra une erreur.
Mise en cache
-
Assurez-vous que le serveur d’origine définit des valeurs valides et précises pour les champs d’en-tête
Date
etLast-Modified
. -
CloudFront respecte normalement un
Cache-Control: no-cache
en-tête dans la réponse depuis l'origine. Pour une exception, consultez Demandes simultanées pour le même objet (réduction des demandes).
Requêtes annulées
Si un objet ne se trouve pas dans le cache périphérique et si un utilisateur met fin à une session (par exemple, ferme un navigateur) après avoir récupéré l'objet depuis votre origine mais avant de pouvoir livrer l'objet demandé, il CloudFront ne CloudFront met pas l'objet en cache dans l'emplacement périphérique.
Négociation de contenu
Si votre origine renvoie Vary:*
la réponse, et si la valeur de Minimum TTL pour le comportement de cache correspondant est 0, CloudFront met l'objet en cache tout en transmettant toutes les demandes suivantes à l'origine pour confirmer que le cache contient la dernière version de l'objet. CloudFront n'inclut aucun en-tête conditionnel, tel que If-None-Match
ouIf-Modified-Since
. Par conséquent, votre origine renvoie l'objet à CloudFront en réponse à chaque demande.
Si votre origine renvoie Vary:*
la réponse, et si la valeur de Minimum TTL pour le comportement de cache correspondant est une autre valeur, CloudFront traite l'Vary
en-tête comme décrit dansHTTPen-têtes de réponse qui CloudFront suppriment ou remplacent.
Cookies
Si vous activez les cookies pour un comportement de cache, et si l'origine renvoie des cookies avec un objet, met en CloudFront cache à la fois l'objet et les cookies. Notez que cela réduit la capacité de mise en cache pour un objet. Pour de plus amples informations, veuillez consulter Contenu du cache basé sur les cookies.
TCPConnexions interrompues
Si la TCP connexion entre votre origine CloudFront et votre origine est interrompue alors que votre origine renvoie un objet CloudFront, le CloudFront comportement dépend du fait que votre origine a inclus ou non un Content-Length
en-tête dans la réponse :
-
En-tête Content-Length : CloudFront renvoie l'objet au visualiseur au fur et à mesure qu'il l'obtient depuis votre origine. Toutefois, si la valeur de l'
Content-Length
en-tête ne correspond pas à la taille de l'objet, l'objet CloudFront n'est pas mis en cache. -
Encodage de transfert : découpé : CloudFront renvoie l'objet au visualiseur au fur et à mesure qu'il l'obtient depuis votre origine. Toutefois, si la réponse segmentée n'est pas complète, l'objet CloudFront n'est pas mis en cache.
-
Aucun en-tête Content-Length : CloudFront renvoie l'objet au visualiseur et le met en cache, mais l'objet n'est peut-être pas complet. Sans
Content-Length
en-tête, CloudFront impossible de déterminer si la TCP connexion a été interrompue accidentellement ou intentionnellement.
Nous vous recommandons de configurer votre HTTP serveur pour ajouter un Content-Length
en-tête afin d' CloudFront empêcher la mise en cache d'objets partiels.
HTTPen-têtes de réponse qui CloudFront suppriment ou remplacent
CloudFront supprime ou met à jour les champs d'en-tête suivants avant de transmettre la réponse de votre origine au lecteur :
-
Set-Cookie
— Si vous configurez CloudFront pour transférer les cookies, le champSet-Cookie
d'en-tête sera transmis aux clients. Pour de plus amples informations, veuillez consulter Contenu du cache basé sur les cookies. -
Trailer
-
Transfer-Encoding
— Si votre origine renvoie ce champ d'en-tête CloudFront , définissez la valeur surchunked
avant de renvoyer la réponse au spectateur. -
Upgrade
-
Vary
– Notez ce qui suit :-
Si vous configurez CloudFront pour transférer l'un des en-têtes spécifiques à l'appareil vers votre origine (
CloudFront-Is-Desktop-Viewer
,,CloudFront-Is-Mobile-Viewer
CloudFront-Is-SmartTV-Viewer
,CloudFront-Is-Tablet-Viewer
) et que vous configurez votre origine pour qu'elle revienneVary:User-Agent
à CloudFront, CloudFront revientVary:User-Agent
au visualiseur. Pour de plus amples informations, veuillez consulter Configuration de la mise en cache en fonction du type d'appareil. -
Si vous configurez votre origine pour inclure l'un
Accept-Encoding
ou l'autreCookie
dans l'Vary
en-tête, CloudFront inclut les valeurs dans la réponse au visualiseur. -
Si vous configurez CloudFront pour transférer les en-têtes vers votre origine, et si vous configurez votre origine pour renvoyer les noms des en-têtes CloudFront dans l'
Vary
en-tête (par exemple,Vary:Accept-Charset,Accept-Language
), CloudFront renvoie l'Vary
en-tête avec ces valeurs au visualiseur. -
Pour plus d'informations sur CloudFront le traitement d'une valeur de
*
dans l'Vary
en-tête, consultezNégociation de contenu. -
Si vous configurez votre origine pour inclure d'autres valeurs dans l'
Vary
en-tête, CloudFront supprimez les valeurs avant de renvoyer la réponse au visualiseur.
-
-
Via
— CloudFront définit la valeur suivante dans la réponse au visualiseur :Via:
http-version
alphanumeric-string
.cloudfront.net (CloudFront)
Par exemple, la valeur est similaire à la suivante :
Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)
Taille de fichier maximale pouvant être mise en cache
La taille maximale d'un corps de réponse enregistré CloudFront dans son cache est de 50 Go. Cette taille inclut les réponses de transfert fragmentées qui ne spécifient pas la valeur d’en-tête Content-Length
.
Vous pouvez utiliser CloudFront pour mettre en cache un objet dont la taille est supérieure à cette taille en utilisant des demandes de plage pour demander les objets dans des parties dont la taille est inférieure ou égale à 50 Go. CloudFrontmet en cache ces parties car chacune d'elles a une taille inférieure ou égale à 50 Go. Une fois que l’utilisateur a récupéré toutes les parties de l’objet, il peut reconstruire l’objet d’origine plus large. Pour de plus amples informations, veuillez consulter Utiliser les demandes de plage pour mettre en cache de large objets.
Origine non disponible
Si votre serveur d'origine n'est pas disponible et CloudFront reçoit une demande pour un objet qui se trouve dans le cache périphérique mais qui a expiré (par exemple, parce que le délai spécifié dans la Cache-Control max-age
directive est dépassé), CloudFront il diffuse la version expirée de l'objet ou affiche une page d'erreur personnalisée. Pour plus d'informations sur CloudFront le comportement lorsque vous avez configuré des pages d'erreur personnalisées, consultezComment CloudFront traite les erreurs lorsque vous avez configuré des pages d'erreur personnalisées.
Dans certains cas, un objet rarement demandé est expulsé et n'est plus disponible dans le cache périphérique. CloudFront ne peut pas servir un objet qui a été expulsé.
Redirections
Si vous changez l’emplacement d’un objet sur le serveur d’origine, vous pouvez configurer votre serveur Web afin de rediriger les demandes vers le nouvel emplacement. Après avoir configuré la redirection, la première fois qu'un utilisateur soumet une demande pour l'objet, CloudFront envoie la demande à l'origine, qui répond par une redirection (par exemple,302 Moved Temporarily
). CloudFront met en cache la redirection et la renvoie au visualiseur. CloudFront ne suit pas la redirection.
Vous pouvez configurer votre serveur Web afin de rediriger les demandes vers l’un des emplacements suivants :
-
Le nouveau URL de l'objet sur le serveur d'origine. Lorsque le spectateur suit la redirection vers le nouveauURL, il contourne CloudFront et passe directement à l'origine. Par conséquent, nous vous recommandons de ne pas rediriger les demandes vers le nouvel objet URL de l'origine.
-
La nouveauté CloudFront URL de l'objet. Lorsque le visualiseur soumet la demande contenant le nouveau CloudFront URL, CloudFront récupère l'objet depuis le nouvel emplacement de votre origine, le met en cache à l'emplacement périphérique et renvoie l'objet au visualiseur. Les demandes suivantes pour l’objet seront servies par l’emplacement périphérique. Ceci évite la latence et la charge associées aux utilisateurs qui demandent l’objet à l’origine. Cependant, chaque nouvelle demande pour l'objet entraînera des frais pour deux demandes adressées àCloudFront.
En-tête Transfer-Encoding
CloudFront ne prend en charge que la chunked
valeur de l'Transfer-Encoding
en-tête. Si votre origine revientTransfer-Encoding: chunked
, CloudFront renvoie l'objet au client dès qu'il est reçu à l'emplacement périphérique et met en cache l'objet au format fragmenté pour les demandes suivantes.
Si le visualiseur fait une Range GET
demande et que l'origine revientTransfer-Encoding: chunked
, CloudFront renvoie l'objet entier au visualiseur au lieu de la plage demandée.
Nous vous recommandons d’utiliser un encodage fragmenté si la longueur du contenu de votre réponse ne peut pas être prédéterminé. Pour de plus amples informations, veuillez consulter TCPConnexions interrompues.