Comprendre les politiques de cache - 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.

Comprendre les politiques de cache

Vous pouvez utiliser une politique de cache pour améliorer le taux de réussite du cache en contrôlant les valeurs (chaînes de requête URL, en-têtes HTTP et cookies) incluses dans la clé de cache. CloudFrontfournit des politiques de cache prédéfinies, appelées politiques gérées, pour les cas d'utilisation courants. Vous pouvez utiliser ces politiques gérées ou créer votre propre politique de cache adaptée à vos besoins. Pour de plus amples informations sur les politiques gérées, veuillez consulter Utiliser des politiques de cache gérées.

Une politique de cache contient les paramètres suivants, qui sont classés en informations de politique, paramètres time-to-live (TTL) et paramètres de clé de cache.

Informations sur les politiques

Nom

Nom permettant d'identifier la politique de cache. Dans la console, vous utilisez le nom pour attacher la politique de cache à un comportement de cache.

Description

Commentaire décrivant la politique de cache. Cette option est facultative, mais elle peut vous aider à identifier l'objectif de la politique de cache.

Paramètres time-to-live (TTL)

Les paramètres de durée de vie (TTL) fonctionnent conjointement avec les en-têtes Cache-Control et Expires HTTP (s'ils figurent dans la réponse d'origine) pour déterminer la durée de validité des objets du CloudFront cache.

Durée de vie minimale

Durée minimale, en secondes, pendant laquelle vous souhaitez que les objets restent dans le CloudFront cache avant de CloudFront vérifier auprès de l'origine si l'objet a été mis à jour. Pour plus d’informations, consultez Gérer la durée pendant laquelle le contenu reste dans le cache (expiration).

Durée de vie (TTL) maximale

Durée maximale, en secondes, pendant laquelle les objets restent dans le CloudFront cache avant de CloudFront vérifier auprès de l'origine si l'objet a été mis à jour. CloudFront utilise ce paramètre uniquement lorsque l'origine envoie Cache-Control ou met en Expires en-tête l'objet. Pour plus d’informations, consultez Gérer la durée pendant laquelle le contenu reste dans le cache (expiration).

TTL par défaut

Durée par défaut, en secondes, pendant laquelle vous souhaitez que les objets restent dans le CloudFront cache avant de CloudFront vérifier auprès de l'origine si l'objet a été mis à jour. CloudFront utilise la valeur de ce paramètre comme TTL de l'objet uniquement lorsque l'origine n'envoie pas Cache-Control ou ne contient pas d'Expiresen-têtes avec l'objet. Pour plus d’informations, consultez Gérer la durée pendant laquelle le contenu reste dans le cache (expiration).

Note

Si les paramètres TTL minimum, TTL maximum et TTL par défaut sont tous définis sur 0, la mise en cache est désactivée. CloudFront

Paramètres de la clé de cache

Les paramètres de la clé de cache spécifient les valeurs figurant dans les demandes du lecteur CloudFront incluses dans la clé de cache. Les valeurs peuvent inclure des chaînes de requête URL, des en-têtes HTTP et des cookies. Les valeurs que vous incluez dans la clé de cache sont automatiquement incluses dans les demandes CloudFront envoyées à l'origine, appelées demandes d'origine. Pour de plus amples informations sur le contrôle des demandes d'origine sans affecter la clé de cache, veuillez consulter Contrôlez les demandes d'origine à l'aide d'une politique.

Les paramètres de clé de cache incluent :

En-têtes

Les en-têtes HTTP dans les demandes du lecteur, CloudFront y compris dans la clé de cache et dans les demandes d'origine. Pour les en-têtes, vous pouvez choisir l'un des paramètres suivants :

  • Aucun – Les en-têtes HTTP dans les demandes de l'utilisateur ne sont pas inclus dans la clé de cache et ne sont pas automatiquement inclus dans les demandes d'origine.

  • Include the following headers (Inclure les en-têtes suivants) – Vous spécifiez quels en-têtes HTTP des demandes de l'utilisateur sont inclus dans la clé de cache et automatiquement inclus dans les demandes d'origine.

Lorsque vous utilisez le paramètre Include the following headers (Inclure les en-têtes suivants), vous spécifiez les en-têtes HTTP par leur nom, et non par leur valeur. Par exemple, considérez l'en-tête HTTP suivant :

Accept-Language: en-US,en;q=0.5

Dans ce cas, vous spécifiez l'en-tête comme Accept-Language, pas comme Accept-Language: en-US,en;q=0.5. Cependant, CloudFront inclut l'en-tête complet, y compris sa valeur, dans la clé de cache et dans les demandes d'origine.

Vous pouvez également inclure certains en-têtes générés par CloudFront dans la clé de cache. Pour plus d’informations, consultez Ajouter des en-têtes de CloudFront demande.

Cookies

Les cookies contenus dans les demandes du lecteur, CloudFront y compris dans la clé de cache, et dans les demandes d'origine. Pour les cookies, vous pouvez choisir l'un des paramètres suivants :

  • Aucun – Les cookies dans les demandes de l'utilisateur ne sont pas inclus dans la clé de cache et ne sont pas automatiquement inclus dans les demandes d'origine.

  • Tous – Tous les cookies dans les demandes de l'utilisateur sont inclus dans la clé de cache et sont automatiquement inclus dans les demandes d'origine.

  • Include specified cookies (Inclure les cookies spécifiés) – Vous spécifiez quels cookies dans les demandes de l'utilisateur sont inclus dans la clé de cache et automatiquement inclus dans les demandes d'origine.

  • Include all cookies except (Inclure tous les cookies sauf) – Vous spécifiez quels cookies dans les demandes de l'utilisateur ne sont pas inclus dans la clé de cache et ne sont pas automatiquement inclus dans les demandes d'origine. Tous les autres cookies, à l'exception de ceux que vous spécifiez, sont inclus dans la clé de cache et automatiquement inclus dans les demandes d'origine.

Lorsque vous utilisez le paramètre Include specified cookies (Inclure les cookies spécifiés) ou Include all cookies except (Inclure tous les cookies sauf), vous spécifiez les cookies par leur nom, et non par leur valeur. Prenons l'exemple de l'en-tête Cookie suivant :

Cookie: session_ID=abcd1234

Dans ce cas, vous spécifiez le cookie comme session_ID, pas comme session_ID=abcd1234. Cependant, CloudFront inclut le cookie complet, y compris sa valeur, dans la clé de cache et dans les requêtes d'origine.

Chaînes de requête

Les chaînes de requête d'URL contenues dans les demandes du lecteur CloudFront incluses dans la clé de cache et dans les demandes d'origine. Pour les chaînes de requête, vous pouvez choisir l'un des paramètres suivants :

  • Aucun – Les chaînes de requête dans les demandes utilisateur ne sont pas incluses dans la clé de cache et ne sont pas automatiquement incluses dans les demandes d'origine.

  • Toutes – Toutes les chaînes de requête dans les demandes de l'utilisateur sont incluses dans la clé de cache et sont également automatiquement incluses dans les demandes d'origine.

  • Include specified query strings (Inclure les chaînes de requête spécifiées) – Vous spécifiez quelles chaînes de requête dans les demandes de l'utilisateur sont incluses dans la clé de cache et automatiquement incluses dans les demandes d'origine.

  • Include all query strings except (Inclure toutes les chaînes de requête sauf) – Vous spécifiez quelles chaînes de requête dans les demandes de l'utilisateur ne sont pas incluses dans la clé de cache et ne sont pas automatiquement incluses dans les demandes d'origine. Toutes les autres chaînes de requête, à l'exception de celles que vous spécifiez, sont incluses dans la clé de cache et automatiquement incluses dans les demandes d'origine.

Lorsque vous utilisez le paramètres Include specified query strings (Inclure les chaînes de requête spécifiées) Include all query strings except (Inclure toutes les chaînes de requête sauf), vous spécifiez les chaînes de requête par leur nom, et non par leur valeur. Prenons l'exemple du chemin d'URL suivant :

/content/stories/example-story.html?split-pages=false

Dans ce cas, vous spécifiez la chaîne de requête comme split-pages, pas comme split-pages=false. Cependant, CloudFront inclut la chaîne de requête complète, y compris sa valeur, dans la clé de cache et dans les demandes d'origine.

Prise en charge de la compression

Ces paramètres permettent CloudFront de demander et de mettre en cache des objets compressés aux formats de compression Gzip ou Brotli, lorsque le visualiseur les prend en charge. Ces paramètres permettent également à CloudFront la compression de fonctionner. Les utilisateurs indiquent leur prise en charge de ces formats de compression avec l'en-tête Accept-Encoding HTTP.

Note

Les navigateurs web Chrome et Firefox prennent en charge la compression Brotli uniquement lorsque la demande est envoyée en HTTPS. Ces navigateurs ne prennent pas en charge Brotli avec les demandes HTTP.

Activez ces paramètres lorsque l'une des conditions suivantes est vraie :

  • Votre origine renvoie des objets compressés Gzip lorsque les utilisateurs les prennent en charge (les demandes contiennent l'en-tête Accept-Encoding HTTP avec gzip comme valeur). Dans ce cas, utilisez le paramètre activé par Gzip (défini EnableAcceptEncodingGzip sur true dans l' CloudFront API AWS CLI, AWS les SDK ou AWS CloudFormation).

  • Votre origine renvoie des objets compressés Brotli lorsque les utilisateurs les prennent en charge (les demandes contiennent l'en-tête Accept-Encoding HTTP avec br comme valeur). Dans ce cas, utilisez le paramètre activé par Brotli (défini EnableAcceptEncodingBrotli sur true dans l' CloudFront API AWS CLI, AWS les SDK ou). AWS CloudFormation

  • Le comportement du cache auquel cette politique de cache est attachée est configuré avec CloudFrontla compression. Dans ce cas, vous pouvez activer la mise en cache pour Gzip ou Brotli, ou les deux. Lorsque CloudFront la compression est activée, l'activation de la mise en cache pour les deux formats peut contribuer à réduire les coûts de transfert de données vers Internet.

Note

Si vous activez la mise en cache pour l'un de ces formats de compression ou pour les deux, n'incluez pas l'Accept-Encodingen-tête dans une politique de demande d'origine associée au même comportement de cache. CloudFrontinclut toujours cet en-tête dans les demandes d'origine lorsque la mise en cache est activée pour l'un ou l'autre de ces formats. L'inclusion Accept-Encoding dans une politique de demande d'origine n'a donc aucun effet.

Si votre serveur d'origine ne renvoie pas d'objets compressés Gzip ou Brotli, ou si le comportement du cache n'est pas configuré avec la CloudFront compression, n'activez pas la mise en cache pour les objets compressés. Si vous le faites, cela peut entraîner une diminution du taux d'accès au cache.

Ce qui suit explique comment ces paramètres affectent une CloudFront distribution. Tous les scénarios suivants supposent que la demande de l'utilisateur inclut l'en-tête Accept-Encoding. Lorsque la demande du visualiseur n'inclut pas l'Accept-Encodingen-tête, CloudFront ne l'inclut pas dans la clé de cache et ne l'inclut pas dans la demande d'origine correspondante.

Lorsque la mise en cache des objets compressés est activée pour les deux formats de compression

Si le visualiseur prend en charge à la fois Gzip et Brotli, c'est-à-dire si les br valeurs gzip et figurent toutes deux dans l'Accept-Encodingen-tête de la demande du visualiseur, effectue les opérations suivantes : CloudFront

  • Normalise l'en-tête sur Accept-Encoding: br,gzip et inclut l'en-tête normalisé dans la clé de cache. La clé de cache n'inclut pas d'autres valeurs qui se trouvaient dans l'en-tête Accept-Encoding envoyé par l'utilisateur.

  • Si le cache contient un objet compressé Brotli ou Gzip qui correspond à la demande et n'a pas expiré, cet emplacement renvoie l'objet à l'utilisateur.

  • Si le cache de l'emplacement périphérique ne contient aucun objet compressé Brotli ou Gzip correspondant à la demande et n'ayant pas expiré, CloudFront inclut l'en-tête normalisé (Accept-Encoding: br,gzip) dans la demande d'origine correspondante. La demande d'origine n'inclut pas les autres valeurs qui se trouvaient dans l'en-tête Accept-Encoding envoyé par l'utilisateur.

Si le visualiseur prend en charge un format de compression mais pas l'autre (par exemple, s'il s'gzipagit d'une valeur dans l'Accept-Encodingen-tête de la demande du lecteur mais ne l'brest pas), CloudFront effectue les opérations suivantes :

  • Normalise l'en-tête sur Accept-Encoding: gzip et inclut l'en-tête normalisé dans la clé de cache. La clé de cache n'inclut pas d'autres valeurs qui se trouvaient dans l'en-tête Accept-Encoding envoyé par l'utilisateur.

  • Si le cache contient un objet compressé Gzip qui correspond à la demande et n'a pas expiré, l'emplacement périphérique renvoie l'objet à l'utilisateur.

  • Si le cache de l'emplacement périphérique ne contient aucun objet compressé Gzip correspondant à la demande et n'ayant pas expiré, CloudFront inclut l'en-tête normalisé (Accept-Encoding: gzip) dans la demande d'origine correspondante. La demande d'origine n'inclut pas les autres valeurs qui se trouvaient dans l'en-tête Accept-Encoding envoyé par l'utilisateur.

Pour comprendre ce qui CloudFront se passe si le lecteur prend en charge Brotli mais pas Gzip, remplacez les deux formats de compression dans l'exemple précédent.

Si le lecteur ne prend pas en charge Brotli ou GZIP, c'est-à-dire que l'Accept-Encodingen-tête de la demande du lecteur ne contient pas de valeurs ou ne contient br pas de valeurs : gzip CloudFront

  • N'inclut pas l'en-tête Accept-Encoding dans la clé de cache.

  • Inclut Accept-Encoding: identity dans la demande d'origine correspondante. La demande d'origine n'inclut pas les autres valeurs qui se trouvaient dans l'en-tête Accept-Encoding envoyé par l'utilisateur.

Lorsque la mise en cache des objets compressés est activée pour un format de compression, mais pas pour l'autre

Si le visualiseur prend en charge le format pour lequel la mise en cache est activée, par exemple, si la mise en cache des objets compressés est activée pour Gzip et que le visualiseur prend en charge Gzip (gzipc'est l'une des valeurs de l'Accept-Encodingen-tête de la demande du lecteur), procède comme suit : CloudFront

  • Normalise l'en-tête sur Accept-Encoding: gzip et inclut l'en-tête normalisé dans la clé de cache.

  • Si le cache contient un objet compressé Gzip qui correspond à la demande et n'a pas expiré, l'emplacement périphérique renvoie l'objet à l'utilisateur.

  • Si le cache de l'emplacement périphérique ne contient aucun objet compressé Gzip correspondant à la demande et n'ayant pas expiré, CloudFront inclut l'en-tête normalisé (Accept-Encoding: gzip) dans la demande d'origine correspondante. La demande d'origine n'inclut pas les autres valeurs qui se trouvaient dans l'en-tête Accept-Encoding envoyé par l'utilisateur.

Ce comportement est le même lorsque l'utilisateur prend en charge Gzip et Brotli (l'en-tête Accept-Encoding de la demande de l'utilisateur inclut les deux gzip et br comme valeurs), car dans ce scénario, la mise en cache des objets compressés pour Brotli n'est pas activée.

Pour comprendre ce qui CloudFront se passe si la mise en cache des objets compressés est activée pour Brotli mais pas pour Gzip, remplacez les deux formats de compression dans l'exemple précédent.

Si le lecteur ne prend pas en charge le format de compression pour lequel la mise en cache est activée (l'Accept-Encodingen-tête de la demande du lecteur ne contient pas la valeur correspondant à ce format), CloudFront :

  • N'inclut pas l'en-tête Accept-Encoding dans la clé de cache.

  • Inclut Accept-Encoding: identity dans la demande d'origine correspondante. La demande d'origine n'inclut pas les autres valeurs qui se trouvaient dans l'en-tête Accept-Encoding envoyé par l'utilisateur.

Lorsque la mise en cache des objets compressés est désactivée pour les deux formats de compression

Lorsque la mise en cache des objets compressés est désactivée pour les deux formats de compression, CloudFront traite l'Accept-Encodingen-tête de la même manière que tout autre en-tête HTTP dans la demande du visualiseur. Par défaut, il n'est pas inclus dans la clé de cache et il n'est pas inclus dans les demandes de l'origine. Vous pouvez l'inclure dans la liste d'autorisation des en-têtes dans une politique de cache ou une politique de demande d'origine comme tout autre en-tête HTTP.