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 CloudFront. Si CloudFront reçoit deux requêtes identiques à l'exception de ce qui se trouve dans l'en-tête Cookie, alors, par défaut, CloudFront traite les demandes comme étant identiques et renvoie le même objet pour les deux demandes.

Vous pouvez configurer CloudFront pour transmettre à votre origine tout ou partie des cookies dans les demandes utilisateur, et mettre en cache des versions distinctes de vos objets en fonction de valeurs de cookies qu'il transmet. En faisant cela, CloudFront utilise une partie ou la totalité des cookies dans les demandes de l'utilisateur, quels que soient ceux configurés pour le transfert, 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 pour mettre en cache vos objets en fonction de la valeur du cookie country, CloudFront transmet les demandes pour locations.html à l'origine et inclut le cookie country et sa valeur. Votre origine renvoie locations.html, et CloudFront met l'objet en cache une fois pour les demandes dans lesquelles la valeur du cookie country est uk et une fois pour les demandes dans lesquelles la valeur est fr.

Important

Amazon S3 et certains serveurs HTTP ne gèrent pas les cookies. Ne configurez pas CloudFront pour transmettre les cookies à une origine qui ne les traite pas ou ne modifie pas sa réponse en fonction de ces derniers. Ainsi, CloudFront pourrait transmettre plus de demandes à l'origine pour le même objet, ce qui ralentirait les performances et augmenterait la charge sur l'origine. Si, compte tenu de l'exemple précédent, votre origine ne traite pas le cookie country ou renvoie toujours la même version de locations.html à CloudFront, quelle que soit la valeur du cookie country, ne configurez pas CloudFront pour transmettre ce cookie.

Inversement, si votre origine personnalisée dépend d'un cookie particulier ou envoie des réponses différentes en fonction d'un cookie, assurez-vous de configurer CloudFront pour qu'il transmette ce cookie à l'origine. Sinon, CloudFront supprimera le cookie avant de transmettre la demande à votre 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 :

  • Transmettre tous les cookies à 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, CloudFront la met en cache, à l'aide des noms et des valeurs de cookie de la demande utilisateur. Si la réponse d’origine inclut des en-têtes Set-Cookie, CloudFront les renvoie à l’utilisateur avec l’objet demandé. CloudFront garde également en cache les en-têtes Set-Cookie avec l’objet renvoyé à partir de l’origine, et envoie ces en-têtes Set-Cookie aux utilisateurs si aucun échec de cache n’a lieu.

  • Transférer un ensemble de cookies que vous spécifiez – — Avant de transférer une demande à l'origine, CloudFront supprime tous les cookies envoyés par l'utilisateur qui ne figurent pas sur la liste approuvée. CloudFront met en cache la réponse à l'aide des noms et valeurs des cookies répertoriés dans la demande utilisateur. Si la réponse d’origine inclut des en-têtes Set-Cookie, CloudFront les renvoie à l’utilisateur avec l’objet demandé. CloudFront garde également en cache les en-têtes Set-Cookie avec l’objet renvoyé à partir de l’origine, et envoie ces en-têtes Set-Cookie aux utilisateurs si aucun échec de cache n’a lieu.

    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 pas transmettre de cookies à votre origine : CloudFront ne met pas en cache vos objets en fonction des cookies envoyés par l’utilisateur. En outre, CloudFront supprime les cookies avant de transmettre les demandes à votre origine et supprime les en-têtes Set-Cookie des réponses avant de renvoyer les réponses à vos utilisateurs. É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 journaliser les demandes et les cookies, il journalise tous les cookies et tous les attributs de cookies, même si vous le configurez pour ne pas transférer les cookies à votre origine ou si vous le configurez pour transférer uniquement des cookies spécifiques. Pour plus d’informations sur la journalisation CloudFront, consultez Journaux d'accès (journaux standard).

Sensibilité à la casse

Les noms et valeurs de cookie sont sensibles à la casse. Par exemple, si CloudFront est configuré pour transmettre tous les cookies et que deux demandes utilisateur pour le même objet ont des cookies identiques à l'exception de la casse, CloudFront met l'objet deux fois en cache.

CloudFront trie les cookies

Si CloudFront est configuré pour transférer les cookies (tous ou un sous-ensemble), il trie les cookies en ordre naturel par nom de cookie avant de transférer la demande à votre origine.

Note

Les noms de cookies commençant par le 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 and If-None-Match

Les demandes conditionnelles If-Modified-Since et If-None-Match ne sont pas prises en charge lorsque 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

Si CloudFront est configuré pour transférer les cookies à l'origine (tous ou des cookies spécifiques), il met également en cache les en-têtes Set-Cookie reçus dans la réponse d'origine. CloudFront inclut ces en-têtes Set-Cookie dans sa réponse à l'utilisateur d'origine, et les inclut également dans les réponses suivantes qui sont servies à partir du cache CloudFront.

Si vous souhaitez recevoir des cookies au niveau de l'origine, mais que vous ne voulez pas que CloudFront mettre en cache les en-têtes Set-Cookie dans les réponses de votre origine, configurez cette dernière pour ajouter un en-tête Cache-Control avec une directive no-cache qui spécifie Set-Cookie comme nom de champ. Par exemple: Cache-Control: no-cache="Set-Cookie". Pour de plus amples informations, consultez Response Cache-Control Directives dans le standard Hypertext Transfer Protocol (HTTP/1.1): mise en cache.

Longueur maximum des noms de cookie

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

Si vous configurez CloudFront afin de transmettre tous les cookies à votre origine, la longueur des noms de cookie n'a pas d'importance.

Pour plus d'informations sur l'utilisation de la console CloudFront pour mettre à jour une distribution afin que CloudFront transmette les cookies à l'origine, consultez Mettre à jour une distribution. Pour plus d’informations sur l’utilisation de l’API CloudFront pour mettre à jour une distribution web, consultez UpdateDistribution dans la Référence des API Amazon CloudFront.