View a markdown version of this page

Mise en cache de contenu basée sur des cookies - Amazon CloudFront

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.

Mise en cache de contenu basée sur des cookies

Par défaut, CloudFront ne prend pas en compte les cookies lors du traitement des demandes et des réponses, ou lors de la mise en cache de vos objets dans des emplacements périphériques. Si CloudFront reçoit deux demandes identiques à l'exception du contenu de l'Cookieen-tête, alors, par défaut, les demandes CloudFront sont traitées comme identiques et renvoie le même objet pour les deux demandes.

Vous pouvez configurer CloudFront pour transmettre à votre origine une partie ou la totalité des cookies dans les requêtes des utilisateurs, et pour mettre en cache des versions distinctes de vos objets en fonction des valeurs des cookies qu'ils transmettent. Dans ce cas, CloudFront utilise une partie ou la totalité des cookies contenus dans les demandes des utilisateurs, quels que soient ceux qu'il est configuré pour transférer, afin d'identifier de manière unique un objet dans le cache.

Par exemple, supposons que des demandes pour locations.html contiennent un cookie country ayant la valeur uk ou fr. Lorsque vous configurez CloudFront la mise en cache de vos objets en fonction de la valeur du country cookie CloudFront , transmettez les demandes locations.html à l'origine et incluez le country cookie et sa valeur. Votre origine renvoie locations.html l'objet et le CloudFront met en cache une fois pour les requêtes contenant la valeur du country cookie uk et une fois pour les requêtes contenant cette valeur. fr

Important

Amazon S3 et certains serveurs HTTP ne gèrent pas les cookies. Ne configurez pas CloudFront pour transférer les cookies vers une origine qui ne traite pas les cookies ou qui ne modifie pas sa réponse en fonction des cookies. Cela peut CloudFront entraîner le transfert d'un plus grand nombre de demandes vers l'origine pour le même objet, ce qui ralentit les performances et augmente la charge sur l'origine. Si, compte tenu de l'exemple précédent, votre site d'origine ne traite pas le country cookie ou renvoie toujours la même version de locations.html to, CloudFront quelle que soit la valeur du country cookie, ne configurez pas CloudFront pour transférer ce cookie.

À l'inverse, si votre origine personnalisée dépend d'un cookie en particulier ou envoie des réponses différentes en fonction d'un cookie, assurez-vous de le configurer CloudFront pour transférer ce cookie vers l'origine. Dans le cas contraire, CloudFront supprimez le cookie avant de transmettre la demande à votre adresse d'origine.

Pour configurer la transmission des cookies, vous mettez à jour le comportement du cache de votre distribution. Pour de plus amples informations sur les comportements de cache, consultez Paramètres de comportement du cache, en particulier les sections Réacheminer les cookies et Cookies de la liste d’autorisation.

Vous pouvez configurer chaque comportement de cache pour effectuer l'une des opérations suivantes :

  • Transférer tous les cookies vers votre origine : CloudFront inclut tous les cookies envoyés par l'utilisateur lorsqu'il transmet des demandes à l'origine. Lorsque votre origine renvoie une réponse, met la réponse en CloudFront cache à l'aide des noms et des valeurs des cookies contenus dans la demande de l'utilisateur. Si la réponse d'origine inclut Set-Cookie des en-têtes, les CloudFront renvoie au visualiseur avec l'objet demandé. CloudFront met également en cache Set-Cookie les en-têtes contenant l'objet renvoyé par l'origine et envoie ces Set-Cookie en-têtes aux spectateurs à chaque accès au cache.

  • Transférer un ensemble de cookies que vous spécifiez : CloudFront supprime tous les cookies envoyés par l'utilisateur qui ne figurent pas sur la liste autorisée avant de transmettre une demande à l'origine. CloudFront met en cache la réponse en utilisant les noms et valeurs des cookies répertoriés dans la demande de l'utilisateur. Si la réponse d'origine inclut Set-Cookie des en-têtes, les CloudFront renvoie au visualiseur avec l'objet demandé. CloudFront met également en cache Set-Cookie les en-têtes contenant l'objet renvoyé par l'origine et envoie ces Set-Cookie en-têtes aux spectateurs à chaque accès au cache.

    Pour plus d'informations sur la spécification de caractères génériques dans des noms des cookies, consultez Cookies de la liste d’autorisation.

    Pour déterminer le quota actuel concernant le nombre de noms de cookies que vous pouvez transférer pour chaque comportement de cache ou pour demander un quota supérieur, consultez la section Quotas sur les chaînes de requêtes (paramètres de cache hérités).

  • Ne transférez pas les cookies vers votre site d'origine : vos objets CloudFront ne sont pas mis en cache en fonction des cookies envoyés par le visiteur. En outre, CloudFront supprime les cookies avant de transmettre les demandes à votre source et supprime les Set-Cookie en-têtes des réponses avant de renvoyer les réponses à vos spectateurs. Étant donné qu’il ne s’agit pas d’un mode d’utilisation optimal des ressources de l’origine, lorsque vous choisissez ce comportement de cache, veillez à ce que votre origine n’ajoute pas de cookies par défaut dans ses réponses.

Remarque à propos de la spécification des cookies que vous ne souhaitez pas transmettre :

Journaux d'accès

Si vous configurez CloudFront pour enregistrer les demandes et pour enregistrer les cookies, CloudFront enregistre tous les cookies et tous les attributs des cookies, même si vous configurez pour CloudFront ne pas transférer les cookies vers votre origine ou si vous configurez CloudFront pour ne transférer que des cookies spécifiques. Pour plus d'informations sur la CloudFront journalisation, consultezJournaux d'accès (journaux standard).

Sensibilité à la casse

Les noms et valeurs de cookie sont sensibles à la casse. Par exemple, s'il CloudFront est configuré pour transférer tous les cookies et que deux requêtes de l'utilisateur pour le même objet contiennent des cookies identiques à l'exception des majuscules, l'objet est mis en CloudFront cache deux fois.

CloudFront trie les cookies

CloudFront Il est configuré pour transférer les cookies (tous ou un sous-ensemble), CloudFront trie les cookies dans l'ordre naturel par nom de cookie avant de transmettre la demande à votre source.

Note

Les noms de cookies commençant par un $ caractère ne sont pas pris en charge. CloudFront supprimera le cookie avant de transmettre la demande à l'origine. Vous pouvez supprimer le caractère $ ou en spécifier un autre au début du nom du cookie.

If-Modified-Since et If-None-Match

If-Modified-Sinceet les requêtes If-None-Match conditionnelles ne sont pas prises en charge lorsqu'il CloudFront est configuré pour transférer les cookies (tous ou un sous-ensemble).

Un format standard de paire nom-valeur est requis

CloudFront transmet un en-tête de cookie uniquement si la valeur est conforme au format standard de paire nom-valeur, par exemple : "Cookie: cookie1=value1; cookie2=value2"

Désactiver la mise en cache des en-têtes Set-Cookie

S'il CloudFront est configuré pour transférer les cookies vers l'origine (qu'il s'agisse de cookies complets ou spécifiques), il met également en cache les Set-Cookie en-têtes reçus dans la réponse d'origine. CloudFront inclut ces Set-Cookie en-têtes dans sa réponse au visualiseur d'origine et les inclut également dans les réponses suivantes qui sont diffusées depuis le CloudFront cache.

Si vous souhaitez recevoir des cookies à votre origine mais que vous ne souhaitez pas CloudFront mettre en cache Set-Cookie les en-têtes des réponses de votre origine, configurez votre origine pour ajouter un Cache-Control en-tête avec une no-cache directive qui le spécifie Set-Cookie comme nom de champ. Par exemple : Cache-Control: no-cache="Set-Cookie". Pour plus d'informations, consultez la section Cache-Control Directives de réponse dans le protocole de transfert hypertexte (HTTP/1.1) : norme de mise en cache.

Longueur maximum des noms de cookie

Si vous configurez CloudFront pour transférer des cookies spécifiques vers votre origine, le nombre total d'octets dans tous les noms de cookies que vous configurez CloudFront pour transférer ne peut pas dépasser 512 moins le nombre de cookies que vous transférez. Par exemple, si vous configurez CloudFront pour transférer 10 cookies vers votre site d'origine, la longueur combinée des noms des 10 cookies ne peut pas dépasser 502 octets (512 à 10).

Si vous configurez CloudFront pour transférer tous les cookies vers votre origine, la longueur des noms des cookies n'a pas d'importance.

Pour plus d'informations sur l'utilisation de la CloudFront console pour mettre à jour une distribution CloudFront afin de transmettre les cookies à l'origine, consultezMettre à jour une distribution. Pour plus d'informations sur l'utilisation de l' CloudFront API pour mettre à jour une distribution, consultez UpdateDistribution le manuel Amazon CloudFront API Reference.