Compréhension des 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.

Compréhension des politiques de cache

Vous pouvez utiliser une politique de cache pour améliorer votre taux d’accès au cache en contrôlant les valeurs (chaînes de requête URL, en-têtes HTTP et cookies) incluses dans la clé de cache. CloudFront fournit des politiques de cache prédéfinies, nommé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 plus d’informations sur les stratégies gérées, consultez Utilisation 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 avec les en-têtes HTTP Cache-Control et Expires (s'ils sont dans la réponse d'origine) pour déterminer la durée pendant laquelle les objets dans le cache CloudFront restent valides.

Durée de vie minimale

Durée minimale, en secondes, pendant laquelle vous voulez que les objets restent dans les caches de CloudFront avant que CloudFront n'envoie une autre demande à l'origine afin de déterminer si l'objet a été mis à jour. Pour plus d’informations, consultez Gestion de la durée de conservation de contenu dans le cache (expiration).

Avertissement

Si votre TTL minimum est supérieur à 0, CloudFront mettra en cache le contenu pendant au moins la durée définie dans le TTL minimal de la politique de cache, même si les directives Cache-Control: no-cache, no-store ou private sont présentes dans les en-têtes de l’origine.

Durée de vie (TTL) maximale

Durée maximale, en secondes, pendant laquelle les objets restent dans les caches de CloudFront avant que CloudFront n'envoie une autre demande à l'origine afin de déterminer si l'objet a été mis à jour. CloudFront utilise ce paramètre uniquement lorsque l'origine envoie des en-têtes Cache-Control ou Expires avec l'objet. Pour plus d’informations, consultez Gestion de la durée de conservation de contenu dans le cache (expiration).

TTL par défaut

Durée par défaut, en secondes, pendant laquelle vous voulez que les objets restent dans les caches de CloudFront avant que CloudFront n'envoie une autre demande à l'origine afin de déterminer si l'objet a été mis à jour. CloudFront utilise cette valeur comme durée de vie de l'objet (TTL) uniquement lorsque l'origine n'envoie pas d'en-têtes Cache-Control ou Expires avec l'objet. Pour plus d’informations, consultez Gestion de la durée de conservation de contenu dans le cache (expiration).

Note

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

Paramètres de la clé de cache

Les paramètres de clé de cache spécifient les valeurs dans les demandes de l'utilisateur que CloudFront inclut 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, nommées demandes d'origine. Pour plus d’informations sur le contrôle des demandes d’origine sans affecter la clé de cache, consultez Contrôle des demandes d’origine à l’aide d’une stratégie.

Les paramètres de clé de cache incluent :

En-têtes

Les en-têtes HTTP dans les demandes de l'utilisateur que CloudFront inclut dans la clé de cache et dans les requêtes 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. Toutefois, 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 Ajout d’en-têtes de demande CloudFront.

Cookies

Les cookies dans les demandes de l'utilisateur que CloudFront inclut 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. Toutefois, CloudFront inclut le cookie complet, y compris sa valeur, dans la clé de cache et dans les demandes d'origine.

Chaînes de requête

Chaînes de requête URL dans les demandes de l'utilisateur que CloudFront inclut 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. Toutefois, 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.

Note

Dans les paramètres de la clé de cache, CloudFront interprète l’astérisque (*) dans les en-têtes, les chaînes de requête et les cookies comme une chaîne littérale, et non comme un caractère générique.

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 la visionneuse le prend en charge. Ces paramètres permettent également à la compression CloudFront 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 Gzip activé (définissez EnableAcceptEncodingGzip sur true dans l'API CloudFront, les kits SDK AWS, la AWS CLI ou 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 Brotli activé (définissez EnableAcceptEncodingBrotli sur true dans l'API CloudFront, les kits SDK AWS, la AWS CLI ou CloudFormation).

  • Le comportement de cache auquel cette politique de cache est attachée est configuré avec la compression CloudFront. Dans ce cas, vous pouvez activer la mise en cache pour Gzip ou Brotli, ou les deux. Lorsque la compression CloudFront est activée, l'activation de la mise en cache pour les deux formats peut vous aider à réduire vos 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 les deux, n'incluez pas l'en-tête Accept-Encoding dans une politique de demande d'origine associée au même comportement de cache. CloudFront inclut 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, de sorte que l'inclusion d'Accept-Encoding dans une politique de demande d'origine n'a 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 compression CloudFront, 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.

La section suivante explique comment ces paramètres affectent une distribution CloudFront. Tous les scénarios suivants supposent que la demande de l'utilisateur inclut l'en-tête Accept-Encoding. Lorsque la demande de l'utilisateur n'inclut pas l'en-tête Accept-Encoding, CloudFront n'inclut pas cet en-tête 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 la visionneuse prend en charge Gzip et Brotli,c'est-à-dire si les valeurs gzip et br sont toutes les deux dans l'en-tête Accept-Encoding de la demande, CloudFront procède comme suit :

  • 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 l'emplacement périphérique ne contient pas d'objet compressé Brotli ou Gzip qui correspond à la demande et n'a 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 la visionneuse prend en charge un format de compression, mais pas l'autre (par exemple, si gzip est une valeur dans l'en-tête Accept-Encoding de la demande de l'utilisateur, mais que br ne l'est pas, CloudFront procède comme suit :

  • 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 l'emplacement périphérique ne contient pas d'objet comprimé Gzip dans le cache qui correspond à la demande et n'a 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 le comportement de CloudFront si la visionneuse prend en charge Brotli mais pas Gzip, remplacez les deux formats de compression l'un par l'autre dans l'exemple précédent.

Si l'utilisateur ne prend pas en charge Brotli ou Gzip (c'est-à-dire si l'en-tête Accept-Encoding de la demande de l'utilisateur ne contient pas br ou gzip comme valeurs, CloudFront procède comme suit :

  • 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 l'utilisateur 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 la visionneuse prend en charge Gzip (gzip est l'une des valeurs de l'en-tête Accept-Encoding dans la demande de l'utilisateur), CloudFront procède comme suit :

  • 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 l'emplacement périphérique ne contient pas d'objet comprimé Gzip dans le cache qui correspond à la demande et n'a 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 le comportement de CloudFront si la mise en cache des objets compressés est activée pour Brotli mais pas pour Gzip, remplacez les deux formats de compression les uns par les autres dans l'exemple précédent.

Si l'utilisateur ne prend pas en charge le format de compression pour lequel la mise en cache est activée (l'en-tête Accept-Encoding de la demande de l'utilisateur ne contient pas la valeur de ce format), CloudFront procède comme suit :

  • 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'en-tête Accept-Encoding de la même manière que n'importe quel autre en-tête HTTP dans la demande de l'utilisateur. 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.