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 de conservation dans le cache et durée de vie minimale
- Adresses IP client
- Authentification SSL côté client
- Compression
- Demandes conditionnelles
- Cookies
- Partage des ressources cross-origin (CORS)
- Chiffrement
- Demandes GET qui incluent un corps de texte
- Méthodes HTTP
- En-têtes et CloudFront comportement des requêtes HTTP (personnalisés et origines d'Amazon S3)
- Version de HTTP
- Longueur maximale d’une demande et longueur maximale d’une URL
- OCSP Stapling
- 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 plus d’informations, consultez Configurer CloudFront pour transférer l'Authorizationen-tête.
Vous pouvez utiliser le protocole HTTP ou HTTPS pour transférer les demandes vers votre serveur d'origine. Pour plus d’informations, consultez Utilisez le protocole HTTPS avec CloudFront.
Durée de conservation dans le cache et durée de vie minimale
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 TTL minimal 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 sans CloudFront inclure d'en-tête de X-Forwarded-For
demande, CloudFront obtient l'adresse IP du spectateur à partir de la connexion TCP, 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 connexion TCP, 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 son adresse IP via la connexion TCP, 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 connexion TCP, 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 transmise à ELB et si l'adresse IP du serveur CloudFront Edge est 192.0.2.199, la demande que reçoit votre instance EC2 contient l'en-tête suivant :
X-Forwarded-For: 192.0.2.2,192.0.2.199
Note
L’en-tête X-Forwarded-For
contient les adresses IPv4 (par exemple, 192.0.2.44) et les adresses IPv6 (par exemple, 2001:0db8:85a3::8a2e:0370:7334).
Notez également que l'X-Forwarded-For
en-tête peut être modifié par chaque nœud sur le chemin d'accès au serveur actuel (CloudFront). Pour plus d’informations, consultez la section 8.1 de la RFC 7239
Authentification SSL côté client
CloudFront ne prend pas en charge l'authentification client avec des certificats SSL côté client. Si une origine demande un certificat côté client, elle CloudFront supprime la demande.
Compression
Pour plus d’informations, consultez 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 plus d’informations, consultez Contenu du cache basé sur les cookies.
Cookies
Vous pouvez configurer CloudFront pour transférer les cookies à votre origine. Pour plus d’informations, consultez Contenu du cache basé sur les cookies.
Partage des ressources cross-origin (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 plus d’informations, consultez Contenu du cache basé sur les en-têtes des demandes.
Chiffrement
Vous pouvez demander aux utilisateurs d'utiliser le protocole HTTPS pour 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 requêtes HTTPS au serveur d'origine à l'aide des protocoles SSLv3, TLSv1.0, TLSv1.1 et TLSv1.2. Pour les origines personnalisées, vous pouvez choisir les protocoles SSL que vous CloudFront souhaitez utiliser pour communiquer avec votre origine :
-
Si vous utilisez la CloudFront console, choisissez les protocoles en cochant les cases Protocoles SSL d'origine. Pour plus d’informations, consultez Créer une distribution.
-
Si vous utilisez l' 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, utilise CloudFront toujours TLSv1.2.
Important
Les autres versions de SSL et TLS ne sont pas prises en charge.
Pour plus d'informations sur l'utilisation du protocole HTTPS avec CloudFront, consultezUtilisez le protocole HTTPS avec CloudFront. Pour obtenir la liste des chiffrements compatibles CloudFront avec les communications HTTPS entre les utilisateurs et CloudFront, et entre CloudFront et votre origine, voir. Protocoles et chiffrements pris en charge entre les utilisateurs et CloudFront
Demandes GET qui incluent un corps de texte
Si une GET
demande d'utilisateur inclut un corps, CloudFront renvoie un code d'état HTTP 403 (Interdit) au lecteur.
Méthodes HTTP
Si vous configurez CloudFront pour traiter toutes les méthodes HTTP 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 qui utilisent 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 méthodes HTTP compatibles, configurez votre serveur d'origine pour qu' CloudFront 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 serveur HTTP.
En-têtes et CloudFront comportement des requêtes HTTP (personnalisés et origines d'Amazon S3)
Le tableau suivant répertorie les en-têtes de requête HTTP que vous pouvez transmettre aux origines Amazon S3 et personnalisée (avec les exceptions qui sont noté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 plus d’informations, consultez 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 plus d’informations, consultez 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 plus d’informations, consultez 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 plus d’informations, consultez 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 plus d’informations, consultez Comment CloudFront traite les demandes partielles pour un objet (plage GETS). |
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 plus d’informations, consultez 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 |
Version de HTTP
CloudFront transmet les demandes à votre origine personnalisée à l'aide du protocole HTTP/1.1.
Longueur maximale d’une demande et longueur maximale d’une 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 une URL à partir de la requête. La longueur maximale de cette URL est de 8 192 caractères.
Si une demande ou une URL dépasse ces valeurs maximales, CloudFront renvoie le code d'état HTTP 413, Request Entity Too Large, au visualiseur, puis met fin à la connexion TCP avec le visualiseur.
OCSP Stapling
Lorsqu'un utilisateur soumet une demande HTTPS pour un objet, l'un CloudFront ou l'autre doit confirmer auprès de l'autorité de certification (CA) que le certificat SSL du domaine n'a pas été révoqué. L'agrafage OCSP 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'agrafage OCSP est plus prononcée lors de la CloudFront réception de nombreuses requêtes HTTPS pour des objets du 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 requêtes HTTPS pour le même domaine, chaque serveur situé à la périphérie reçoit rapidement une réponse de l'autorité de certification lui indiquant qu'il peut « agrafer » un paquet dans le cadre de la poignée de contact SSL ; 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. Maintenir une connexion persistante permet de gagner le temps requis pour ré-établir la connexion TCP et établir une autre liaison TLS pour les demandes ultérieures.
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 les requêtes HTTP ou HTTPS au serveur d'origine en fonction des éléments suivants :
-
Protocole de la demande à laquelle le spectateur envoie CloudFront, HTTP ou HTTPS.
-
La valeur du champ Origin Protocol Policy dans la CloudFront console ou, si vous utilisez l' CloudFront API, l'
OriginProtocolPolicy
élément du typeDistributionConfig
complexe. Dans la CloudFront console, les options sont HTTP uniquement, HTTPS uniquement et Match Viewer.
Si vous spécifiez HTTP uniquement ou HTTPS uniquement, CloudFront transfère les demandes au serveur d'origine en utilisant le protocole spécifié, quel que soit le protocole indiqué dans la demande du lecteur.
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 à l'aide des protocoles HTTP et HTTPS.
Important
Si une CloudFront demande est transmise à l'origine à l'aide du protocole HTTPS, et si le serveur d'origine renvoie un certificat non valide ou un certificat auto-signé, CloudFront la connexion TCP est interrompue.
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 à l'aide de l' CloudFront API, UpdateDistributionconsultez le Amazon CloudFront API Reference.
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 plus d’informations, consultez 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 le transfert d'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 méthode HTTP de la requête 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 plus d’informations, consultez 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 TTL minimum pour le comportement du cache sur 0 et configurer l'origine à envoyerCache-Control:
private
,, Cache-Control: no-store
Cache-Control:
no-cache
Cache-Control: max-age=0
, ou. Cache-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 HTTP 200 OK. Si votre origine envoie une autre réponse 100-Continue après la première, elle CloudFront renverra un message d'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 est renvoyée Vary:*
dans la réponse, et si la valeur du TTL minimum 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 dansEn-têtes de réponse HTTP 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.
Connexions TCP annulées
Si la connexion TCP 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 connexion TCP a été interrompue accidentellement ou intentionnellement.
Nous vous recommandons de configurer votre serveur HTTP pour ajouter un Content-Length
en-tête afin d' CloudFront empêcher la mise en cache d'objets partiels.
En-têtes de réponse HTTP 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 plus d’informations, consultez 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 plus d’informations, consultez 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:
version_http
chaîne_alphanumérique
.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 plus d’informations, consultez 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 :
-
La nouvelle URL de l’objet sur le serveur d’origine. Lorsque le lecteur suit la redirection vers la nouvelle URL, il contourne l'URL d'origine CloudFront et se dirige directement vers l'URL d'origine. Par conséquent, nous vous recommandons de ne pas rediriger les demandes vers la nouvelle URL de l'objet sur l'origine.
-
La nouvelle CloudFront URL de l'objet. Lorsque le lecteur soumet la demande contenant la nouvelle 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 Connexions TCP annulées.