

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.

# Contrôle de la clé de cache à l’aide d’une politique
<a name="controlling-the-cache-key"></a>

Avec une *politique de CloudFront cache*, vous pouvez spécifier les en-têtes HTTP, les cookies et les chaînes de requête CloudFront inclus dans la *clé de cache* pour les objets mis en cache à des emplacements CloudFront périphériques. La clé de cache est l’identifiant unique de chaque objet du cache, et elle détermine si la demande HTTP d’un utilisateur entraîne un *accès au cache*.

Un accès au cache se produit lorsqu'une demande d'utilisateur génère la même clé de cache qu'une requête précédente et que l'objet de cette clé de cache est dans le cache de l'emplacement périphérique et valide. En cas d'accès au cache, l'objet est diffusé au spectateur depuis un emplacement CloudFront périphérique, ce qui présente les avantages suivants :
+ Réduction de la charge sur votre serveur d’origine
+ Latence réduite pour l’utilisateur

L’inclusion de moins de valeurs dans la clé de cache augmente la probabilité d'un accès au cache. Vous obtenez ainsi de meilleures performances à partir de votre site web ou de votre application, car le *taux d’accès au cache* augmente (une proportion plus élevée de demandes de l’utilisateur entraîne un accès au cache). Pour de plus amples informations, veuillez consulter [Comprendre la clé de cache](understanding-the-cache-key.md).

Pour contrôler la clé de cache, vous devez utiliser une *politique de CloudFront cache*. Vous associez une politique de cache à un ou plusieurs comportements de cache dans une CloudFront distribution.

Vous pouvez également utiliser la politique de cache pour spécifier les paramètres de durée de vie (TTL) des objets du CloudFront cache et permettre de demander et de CloudFront mettre en cache des objets compressés.

**Note**  
Les paramètres du cache n’ont aucun effet sur les demandes gRPC, car le trafic gRPC ne peut pas être mis en cache. Pour de plus amples informations, veuillez consulter [Utilisation de gRPC avec des distributions CloudFront](distribution-using-grpc.md).

**Topics**
+ [

# Compréhension des politiques de cache
](cache-key-understand-cache-policy.md)
+ [

# Création de politiques de cache
](cache-key-create-cache-policy.md)
+ [

# Utilisation des politiques de cache gérées
](using-managed-cache-policies.md)
+ [

# Comprendre la clé de cache
](understanding-the-cache-key.md)

# Compréhension des politiques de cache
<a name="cache-key-understand-cache-policy"></a>

Vous pouvez utiliser une stratégie de cache pour améliorer votre taux d'accès 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. CloudFront fournit des stratégies de cache prédéfinies, nommées *stratégies 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](using-managed-cache-policies.md).

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
<a name="cache-key-understand-cache-policy-info"></a>

**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)
<a name="cache-key-understand-cache-policy-ttl"></a>

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 de plus amples informations, veuillez consulter [Gestion de la durée de conservation de contenu dans le cache (expiration)](Expiration.md).  
Si votre TTL minimum est supérieur à 0, le contenu CloudFront sera mis en cache pendant au moins la durée spécifiée dans le TTL minimum de la politique de cache, même si les `private` directives `Cache-Control: no-cache``no-store`, ou sont présentes dans les en-têtes d'origine.

**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 contient `Expires` des en-têtes avec l'objet. Pour de plus amples informations, veuillez consulter [Gestion de la durée de conservation de contenu dans le cache (expiration)](Expiration.md).

**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'`Expires`en-têtes avec l'objet. Pour de plus amples informations, veuillez consulter [Gestion de la durée de conservation de contenu dans le cache (expiration)](Expiration.md).

**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
<a name="cache-key-understand-cache-policy-settings"></a>

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, 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](controlling-origin-requests.md).

Les paramètres de clé de cache incluent :
+ [En-têtes](#cache-policy-headers)
+ [Cookies ](#cache-policy-cookies)
+ [Chaînes de requête](#cache-policy-query-strings)
+ [Prise en charge de la compression](#cache-policy-compressed-objects)

**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`. 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 de plus amples informations, veuillez consulter [Ajouter des en-têtes de CloudFront demande](adding-cloudfront-headers.md).

**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.  
Pour les paramètres des clés de cache, CloudFront traitez l'astérisque (`*`) pour 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 le visualiseur les prend en charge. Ces paramètres permettent également à la [compression CloudFront ](ServingCompressedFiles.md) de fonctionner. Les utilisateurs indiquent leur prise en charge de ces formats de compression avec l'en-tête `Accept-Encoding` HTTP.  
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 SDKs 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 **activé par Brotli** (défini sur `EnableAcceptEncodingBrotli` `true` dans l' CloudFront API, AWS SDKs AWS CLI, ou CloudFormation).
+ Le comportement de cache auquel cette stratégie de cache est attachée est configuré avec la [compression CloudFront](ServingCompressedFiles.md). 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.
Si vous activez la mise en cache pour l'un de ces formats de compression ou pour les deux, n'incluez pas l'`Accept-Encoding`en-tête dans une [politique de demande d'origine](controlling-origin-requests.md) 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. 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](cache-hit-ratio.md).  
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-Encoding`en-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-Encoding`en-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'`gzip`agit d'une valeur dans l'`Accept-Encoding`en-tête de la demande du lecteur mais ne l'`br`est 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-Encoding`en-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 (`gzip`c'est l'une des valeurs de l'`Accept-Encoding`en-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-Encoding`en-tête de la demande du lecteur ne contient pas la valeur de 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-Encoding`en-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.

# Création de politiques de cache
<a name="cache-key-create-cache-policy"></a>

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. Vous pouvez créer une politique de cache dans la CloudFront console, avec le AWS Command Line Interface (AWS CLI) ou avec l' CloudFront API.

Après avoir créé une stratégie de cache, vous l'associez à un ou plusieurs comportements de cache dans une distribution CloudFront .

------
#### [ Console ]

**Pour créer une politique de cache (console)**

1. Connectez-vous à la page **Politiques AWS Management Console et ouvrez-la** dans la CloudFront console à l'adresse[https://console.aws.amazon.com/cloudfront/v4/home?#/policies](https://console.aws.amazon.com/cloudfront/v4/home?#/policies).

1. Choisissez **Créer une politique de cache**.

1. Choisissez le paramètre souhaité pour cette politique de cache. Pour plus d'informations, consultez [Compréhension des politiques de cache](cache-key-understand-cache-policy.md).

1. Lorsque vous avez terminé, choisissez **Create** (Créer).

Après avoir créé une politique de cache, vous pouvez l'attacher à un comportement de cache.

**Pour attacher une politique de cache à une distribution existante (console)**

1. Ouvrez la page **Distributions** dans la console CloudFront à l'adresse [https://console.aws.amazon.com/cloudfront/v4/home#/distributions](https://console.aws.amazon.com/cloudfront/v4/home#/distributions).

1. Choisissez la distribution à mettre à jour, puis choisissez l'onglet **Comportements**.

1. Choisissez le comportement du cache à mettre à jour, puis choisissez **Modifier**.

   Ou, pour créer un nouveau comportement de cache, choisissez **Create behavior** (Créer un comportement).

1. Dans la section **Clé de cache et demandes d’origine**, assurez-vous que l’option **Politique de cache et politique de demande d’origine** est sélectionnée.

1. Pour **Cache policy** (Politique de cache), choisissez la politique de cache à attacher à ce comportement de cache.

1. Choisissez **Save changes** (Enregistrer les modifications) en bas de la page.

**Pour attacher une politique de cache à une nouvelle distribution (console)**

1. Ouvrez la CloudFront console à l'adresse[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Choisissez **Create distribution** (Créer une distribution).

1. Dans la section **Clé de cache et demandes d’origine**, assurez-vous que l’option **Politique de cache et politique de demande d’origine** est sélectionnée.

1. Pour **Cache policy** (Politique de cache), choisissez la politique de cache à attacher au comportement de cache par défaut de cette distribution.

1. Choisissez les paramètres souhaités pour l’origine, le comportement de cache par défaut et les autres paramètres de distribution. Pour plus d'informations, consultez [Référence de tous les paramètres de distribution](distribution-web-values-specify.md).

1. Lorsque vous avez terminé, choisissez **Create distribution** (Créer une distribution).

------
#### [ CLI ]

Pour créer une politique de cache avec le AWS Command Line Interface (AWS CLI), utilisez la **aws cloudfront create-cache-policy** commande. Vous pouvez utiliser un fichier d’entrée pour fournir les paramètres d’entrée de la commande, plutôt que de spécifier chaque paramètre individuel comme entrée de ligne de commande.

**Pour créer une politique de cache (CLI avec un fichier d'entrée)**

1. Utilisez la commande suivante pour créer un fichier nommé `cache-policy.yaml` qui contient tous les paramètres d’entrée de la commande **create-cache-policy**.

   ```
   aws cloudfront create-cache-policy --generate-cli-skeleton yaml-input > cache-policy.yaml
   ```

1. Ouvrez le fichier nommé `cache-policy.yaml` que vous venez de créer. Modifiez le fichier pour spécifier les paramètres de politique de cache que vous souhaitez, puis enregistrez le fichier. Vous pouvez supprimer des champs facultatifs du fichier, mais ne supprimez pas les champs obligatoires.

   Pour plus d’informations sur les paramètres de politique de cache, consultez [Compréhension des politiques de cache](cache-key-understand-cache-policy.md).

1. Utilisez la commande suivante pour créer la politique de cache à l'aide des paramètres d'entrée du fichier `cache-policy.yaml`.

   ```
   aws cloudfront create-cache-policy --cli-input-yaml file://cache-policy.yaml
   ```

   Notez la valeur `Id` dans la sortie de la commande. Il s'agit de l'ID de politique de cache, dont vous avez besoin pour associer la politique de cache au comportement de cache d'une CloudFront distribution.

**Pour attacher une politique de cache à une distribution existante (CLI avec un fichier d'entrée)**

1. Utilisez la commande suivante pour enregistrer la configuration de distribution pour la CloudFront distribution que vous souhaitez mettre à jour. Remplacez *distribution\$1ID* par l'ID de la distribution.

   ```
   aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
   ```

1. Ouvrez le fichier nommé `dist-config.yaml` que vous venez de créer. Modifiez le fichier en apportant les modifications suivantes à chaque comportement de cache que vous mettez à jour pour utiliser une politique de cache.
   + Dans le comportement du cache, ajoutez un champ nommé `CachePolicyId`. Pour la valeur du champ, utilisez l'ID de politique de cache que vous avez noté après la création de la politique.
   + Supprimez les champs `MinTTL`, `MaxTTL`, `DefaultTTL` et `ForwardedValues` du comportement du cache. Ces paramètres sont spécifiés dans la politique de cache, de sorte que vous ne pouvez pas inclure ces champs et une politique de cache dans le même comportement de cache.
   + Renommez le champ `ETag` en `IfMatch`, mais ne modifiez pas la valeur du champ.

   Enregistrez le fichier lorsque vous avez terminé.

1. Utilisez la commande suivante pour mettre à jour la distribution afin d'utiliser la politique de cache. Remplacez *distribution\$1ID* par l'ID de la distribution.

   ```
   aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml
   ```

**Pour attacher une politique de cache à une nouvelle distribution (CLI avec un fichier d'entrée)**

1. Utilisez la commande suivante pour créer un fichier nommé `distribution.yaml` qui contient tous les paramètres d’entrée de la commande **create-distribution**.

   ```
   aws cloudfront create-distribution --generate-cli-skeleton yaml-input > distribution.yaml
   ```

1. Ouvrez le fichier nommé `distribution.yaml` que vous venez de créer. Dans le comportement de cache par défaut, dans le champ `CachePolicyId`, entrez l'ID de politique de cache que vous avez noté après la création de la politique. Poursuivez la modification du fichier pour spécifier les paramètres de distribution souhaité, puis enregistrez le fichier lorsque vous avez terminé.

   Pour plus d’informations sur les paramètres de distribution, consultez [Référence de tous les paramètres de distribution](distribution-web-values-specify.md).

1. Utilisez la commande suivante pour créer la distribution à l’aide des paramètres d’entrée du fichier `distribution.yaml`.

   ```
   aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml
   ```

------
#### [ API ]

Pour créer une politique de cache avec l' CloudFront API, utilisez [CreateCachePolicy](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateCachePolicy.html). Pour plus d'informations sur les champs que vous spécifiez dans cet appel d'API, consultez [Compréhension des politiques de cache](cache-key-understand-cache-policy.md) la documentation de référence de l'API pour votre AWS SDK ou autre client d'API.

Après avoir créé une politique de cache, vous pouvez l'attacher à un comportement de cache, à l'aide de l'un des appels d'API suivants :
+ Pour l'associer à un comportement de cache dans une distribution existante, utilisez [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).
+ Pour l'associer à un comportement de cache dans une nouvelle distribution, utilisez [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html).

Pour ces deux appels d'API, indiquez l'ID de la politique de cache dans le champ `CachePolicyId`, à l'intérieur d'un comportement de cache. Pour plus d'informations sur les autres champs que vous spécifiez dans ces appels d'API, consultez [Référence de tous les paramètres de distribution](distribution-web-values-specify.md) la documentation de référence de l'API pour votre AWS SDK ou autre client d'API.

------

# Utilisation des politiques de cache gérées
<a name="using-managed-cache-policies"></a>

CloudFront fournit un ensemble de politiques de cache gérées que vous pouvez associer à tous les comportements de cache de votre distribution. Avec une stratégie de cache gérée, vous n'avez pas besoin d'écrire ou de gérer votre propre stratégie de cache. Les stratégies gérées utilisent des paramètres optimisés pour des cas d’utilisation spécifiques.

Pour utiliser une stratégie de cache gérée, vous l'attachez à un comportement de cache dans votre distribution. Le processus est le même que lorsque vous créez une stratégie de cache, mais au lieu d'en créer une nouvelle, vous n'avez qu'à attacher l'une des stratégies de cache gérées. Vous joignez la politique soit par son nom (avec la console), soit par son identifiant (avec le AWS CLI ou SDKs). Les noms et IDs les noms sont répertoriés dans la section suivante.

Pour de plus amples informations, veuillez consulter [Création de politiques de cache](cache-key-create-cache-policy.md).

Les rubriques suivantes décrivent les stratégies de cache gérées que vous pouvez utiliser.

**Topics**
+ [

## Amplify
](#managed-cache-policy-amplify)
+ [

## CachingDisabled
](#managed-cache-policy-caching-disabled)
+ [

## CachingOptimized
](#managed-cache-caching-optimized)
+ [

## CachingOptimizedForUncompressedObjects
](#managed-cache-caching-optimized-uncompressed)
+ [

## Élémentaire- MediaPackage
](#managed-cache-policy-mediapackage)
+ [

## UseOriginCacheControlHeaders
](#managed-cache-policy-origin-cache-headers)
+ [

## UseOriginCacheControlHeaders-QueryStrings
](#managed-cache-policy-origin-cache-headers-query-strings)

## Amplify
<a name="managed-cache-policy-amplify"></a>

[Afficher cette politique dans la CloudFront console](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/2e54312d-136d-493c-8eb9-b001f22f67d2)

Cette stratégie est conçue pour être utilisée avec une origine qui est une appli web [AWS Amplify](https://aws.amazon.com/amplify/).

Lors de l'utilisation CloudFormation de l' AWS CLI API ou de l' CloudFront API, l'identifiant de cette politique est le suivant :

`2e54312d-136d-493c-8eb9-b001f22f67d2`

Cette stratégie possède les paramètres suivants :
+ **Minimum TTL** (Durée de vie minimale) : 2 secondes
+ **Maximum TTL** (Durée de vie maximale) : 600 secondes (10 minutes)
+ **Default TTL** (Durée de vie par défaut) : 2 secondes
+ **En-têtes inclus dans la clé de cache :**
  + `Authorization`
  + `CloudFront-Viewer-Country`
  + `Host`

  L'en-tête `Accept-Encoding` normalisé est également inclus, car le paramètre des objets compressés du cache est activé. Pour plus d’informations, consultez [Prise en charge de la compression](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).
+ **Cookies included in cache key** (Cookies inclus dans la clé de cache) : tous les cookies sont inclus.
+ **Query strings included in cache key** (Chaînes de requête incluses dans la clé de cache) : toutes les chaînes de requête sont incluses.
+ **Paramètre des objets compressés du cache :** activé. Pour plus d’informations, consultez [Prise en charge de la compression](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).

**Avertissement**  
Comme cette politique a un TTL minimum supérieur à 0, le contenu CloudFront sera mis en cache pendant au moins la durée spécifiée dans le TTL minimum de la politique de cache, même si les `private` directives `Cache-Control: no-cache``no-store`, ou sont présentes dans les en-têtes d'origine.

### AWS Amplify Politiques de cache d'hébergement
<a name="additional-amplify-policies"></a>

Amplify utilise les politiques de cache gérées suivantes pour optimiser la configuration de cache par défaut pour les applications des clients :
+ [Amplify-Default](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/4d1d2f1d-3a71-49ad-9e08-7ea5d843a556)
+ [Amplifier- DefaultNoCookies](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/a6bad946-36c3-4c33-aa98-362c74a7fb13)
+ [Amplifier- ImageOptimization](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/1c6db51a-a33f-469a-8245-dae26771f530)
+ [Amplifier- StaticContent](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/7e5fad67-ee98-4ad0-b05a-394999eefc1a)

**Note**  
Ces politiques ne sont utilisées que par Amplify. Nous vous déconseillons d’utiliser ces politiques pour vos distributions. 

Pour plus d’informations sur la gestion de la configuration du cache pour votre application hébergée avec Amplify, consultez [Gestion de la configuration de cache](https://docs.aws.amazon.com/amplify/latest/userguide/caching.html) dans le *Guide de l’utilisateur Amplify Hosting*.

## CachingDisabled
<a name="managed-cache-policy-caching-disabled"></a>

[Afficher cette politique dans la CloudFront console](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/4135ea2d-6df8-44a3-9df3-4b5a84be39ad)

Cette stratégie désactive la mise en cache. Cette stratégie est utile pour le contenu dynamique et pour les demandes qui ne peuvent pas être mises en cache.

Lors de l'utilisation CloudFormation de l' AWS CLI API ou de l' CloudFront API, l'identifiant de cette politique est le suivant :

`4135ea2d-6df8-44a3-9df3-4b5a84be39ad`

Cette stratégie possède les paramètres suivants :
+ **Minimum TTL** (Durée de vie minimale) : 0 seconde
+ **Maximum TTL** (Durée de vie maximale) : 0 seconde
+ **Default TTL** (Durée de vie par défaut) : 0 seconde
+ **Headers included in the cache key** (En-têtes inclus dans la clé de cache) : aucun
+ **Cookies included in the cache key** (Cookies inclus dans la clé de cache) : aucun
+ **Query strings included in the cache key** (Chaînes de requête incluses dans la clé de cache) : aucune
+ **Paramètre des objets compressés du cache :** Désactivé

## CachingOptimized
<a name="managed-cache-caching-optimized"></a>

[Afficher cette politique dans la CloudFront console](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/658327ea-f89d-4fab-a63d-7e88639e58f6)

Cette politique est conçue pour optimiser l'efficacité du cache en minimisant les valeurs CloudFront incluses dans la clé de cache. CloudFront n'inclut aucune chaîne de requête ni aucun cookie dans la clé de cache et inclut uniquement l'`Accept-Encoding`en-tête normalisé. Cela permet CloudFront de mettre en cache séparément les objets aux formats de compression Gzip et Brotli lorsque l'origine les renvoie ou lorsque la compression des [CloudFront bords](ServingCompressedFiles.md) est activée.

Lors de l'utilisation CloudFormation de l' AWS CLI API ou de l' CloudFront API, l'identifiant de cette politique est le suivant :

`658327ea-f89d-4fab-a63d-7e88639e58f6`

Cette stratégie possède les paramètres suivants :
+ **Minimum TTL** (Durée de vie minimale) : 1 seconde
+ **Maximum TTL** (Durée de vie maximale) : 31 536 000 secondes (365 jours).
+ **Default TTL** (Durée de vie par défaut) : 86 400 secondes (24 heures).
+ **Headers included in the cache key** (En-têtes inclus dans la clé de cache) : aucun n'est explicitement inclus. L'en-tête `Accept-Encoding` normalisé est inclus car le paramètre des objets compressés du cache est activé. Pour plus d’informations, consultez [Prise en charge de la compression](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).
+ **Cookies included in the cache key** (Cookies inclus dans la clé de cache) : aucun.
+ **Query strings included in the cache key** (Chaînes de requête incluses dans la clé de cache) : aucune.
+ **Paramètre des objets compressés du cache :** activé. Pour plus d’informations, consultez [Prise en charge de la compression](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).

**Avertissement**  
Comme cette politique a un TTL minimum supérieur à 0, le contenu CloudFront sera mis en cache pendant au moins la durée spécifiée dans le TTL minimum de la politique de cache, même si les `private` directives `Cache-Control: no-cache``no-store`, ou sont présentes dans les en-têtes d'origine.

## CachingOptimizedForUncompressedObjects
<a name="managed-cache-caching-optimized-uncompressed"></a>

[Afficher cette politique dans la CloudFront console](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/b2884449-e4de-46a7-ac36-70bc7f1ddd6d)

Cette stratégie est conçue pour optimiser l'efficacité du cache en minimisant les valeurs incluses dans la clé de cache. Aucune chaîne de requête, aucun en-tête ou cookie ne sont inclus. Cette stratégie est identique à la précédente, mais elle désactive le paramètre des objets compressés du cache.

Lors de l'utilisation CloudFormation de l' AWS CLI API ou de l' CloudFront API, l'identifiant de cette politique est le suivant :

`b2884449-e4de-46a7-ac36-70bc7f1ddd6d`

Cette stratégie possède les paramètres suivants :
+ **Minimum TTL** (Durée de vie minimale) : 1 seconde
+ **Maximum TTL** (Durée de vie maximale) : 31 536 000 secondes (365 jours)
+ **Default TTL** (Durée de vie par défaut) : 86 400 secondes (24 heures)
+ **Headers included in the cache key** (En-têtes inclus dans la clé de cache) : aucun
+ **Cookies included in the cache key** (Cookies inclus dans la clé de cache) : aucun
+ **Query strings included in the cache key** (Chaînes de requête incluses dans la clé de cache) : aucune
+ **Paramètre des objets compressés du cache :** Désactivé

**Avertissement**  
Comme cette politique a un TTL minimum supérieur à 0, le contenu CloudFront sera mis en cache pendant au moins la durée spécifiée dans le TTL minimum de la politique de cache, même si les `private` directives `Cache-Control: no-cache``no-store`, ou sont présentes dans les en-têtes d'origine.

## Élémentaire- MediaPackage
<a name="managed-cache-policy-mediapackage"></a>

[Afficher cette politique dans la CloudFront console](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/08627262-05a9-4f76-9ded-b50ca2e3a84f)

Cette stratégie est conçue pour être utilisée avec une origine qui est un point de terminaison AWS Elemental MediaPackage .

Lors de l'utilisation CloudFormation de l' AWS CLI API ou de l' CloudFront API, l'identifiant de cette politique est le suivant :

`08627262-05a9-4f76-9ded-b50ca2e3a84f`

Cette stratégie possède les paramètres suivants :
+ **Minimum TTL** (Durée de vie minimale) : 0 seconde
+ **Maximum TTL** (Durée de vie maximale) : 31 536 000 secondes (365 jours)
+ **Default TTL** (Durée de vie par défaut) : 86 400 secondes (24 heures)
+ **Headers included in the cache key** (En-têtes inclus dans la clé de cache) :
  + `Origin`

  L'en-tête `Accept-Encoding` normalisé est également inclus, car le paramètre des objets compressés du cache est activé pour Gzip. Pour plus d’informations, consultez [Prise en charge de la compression](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).
+ **Cookies included in the cache key** (Cookies inclus dans la clé de cache) : aucun
+ **Query strings included in the cache key** (Chaînes de requête incluses dans la clé de cache) :
  + `aws.manifestfilter`
  + `start`
  + `end`
  + `m`
+ **Cache compressed objects setting** (Paramètre des objets compressés du cache) : activé pour Gzip. Pour plus d’informations, consultez [Prise en charge de la compression](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).

## UseOriginCacheControlHeaders
<a name="managed-cache-policy-origin-cache-headers"></a>

[Afficher cette politique dans la CloudFront console](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/83da9c7e-98b4-4e11-a168-04f0df8e2c65)

Cette politique est conçue pour être utilisée avec une origine qui renvoie des en-têtes de réponse HTTP `Cache-Control` et ne diffuse pas de contenu différent en fonction des valeurs présentes dans la chaîne de requête. Si votre origine sert un contenu différent en fonction des valeurs présentes dans la chaîne de requête, envisagez d’utiliser [UseOriginCacheControlHeaders-QueryStrings](#managed-cache-policy-origin-cache-headers-query-strings).

Lors de l'utilisation CloudFormation de l' AWS CLI API ou de l' CloudFront API, l'identifiant de cette politique est le suivant :

`83da9c7e-98b4-4e11-a168-04f0df8e2c65`

Cette stratégie possède les paramètres suivants :
+ **Minimum TTL** (Durée de vie minimale) : 0 seconde
+ **Maximum TTL** (Durée de vie maximale) : 31 536 000 secondes (365 jours)
+ **Default TTL** (Durée de vie par défaut) : 0 seconde
+ **Headers included in the cache key** (En-têtes inclus dans la clé de cache) :
  + `Host`
  + `Origin`
  + `X-HTTP-Method-Override`
  + `X-HTTP-Method`
  + `X-Method-Override`

  L’en-tête `Accept-Encoding` normalisé est également inclus, car le paramètre des objets compressés du cache est activé. Pour plus d’informations, consultez [Prise en charge de la compression](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).
+ **Cookies inclus dans la clé de cache** : tous les cookies sont inclus.
+ **Query strings included in the cache key** (Chaînes de requête incluses dans la clé de cache) : aucune.
+ **Paramètre des objets compressés du cache :** activé. Pour plus d’informations, consultez [Prise en charge de la compression](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).

## UseOriginCacheControlHeaders-QueryStrings
<a name="managed-cache-policy-origin-cache-headers-query-strings"></a>

[Afficher cette politique dans la CloudFront console](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/4cc15a8a-d715-48a4-82b8-cc0b614638fe)

Cette politique est conçue pour être utilisée avec une origine qui renvoie des en-têtes de réponse HTTP `Cache-Control` et diffuse un contenu différent en fonction des valeurs présentes dans la chaîne de requête. Si votre origine ne diffuse pas de contenu différent en fonction des valeurs présentes dans la chaîne de requête, envisagez d’utiliser [UseOriginCacheControlHeaders](#managed-cache-policy-origin-cache-headers).

Lors de l'utilisation CloudFormation de l' AWS CLI API ou de l' CloudFront API, l'identifiant de cette politique est le suivant :

`4cc15a8a-d715-48a4-82b8-cc0b614638fe`

Cette stratégie possède les paramètres suivants :
+ **Minimum TTL** (Durée de vie minimale) : 0 seconde
+ **Maximum TTL** (Durée de vie maximale) : 31 536 000 secondes (365 jours)
+ **Default TTL** (Durée de vie par défaut) : 0 seconde
+ **Headers included in the cache key** (En-têtes inclus dans la clé de cache) :
  + `Host`
  + `Origin`
  + `X-HTTP-Method-Override`
  + `X-HTTP-Method`
  + `X-Method-Override`

  L’en-tête `Accept-Encoding` normalisé est également inclus, car le paramètre des objets compressés du cache est activé. Pour plus d’informations, consultez [Prise en charge de la compression](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).
+ **Cookies inclus dans la clé de cache** : tous les cookies sont inclus.
+ **Chaînes de requête incluses dans la clé de cache** : toutes les chaînes de requête sont incluses.
+ **Paramètre des objets compressés du cache :** activé. Pour plus d’informations, consultez [Prise en charge de la compression](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).

# Comprendre la clé de cache
<a name="understanding-the-cache-key"></a>

La *clé de cache* détermine si une requête de visionneuse vers un emplacement périphérique CloudFront entraîne un *accès au cache*. La clé de cache est l'identifiant unique d'un objet dans le cache. Chaque objet du cache possède une clé de cache unique.

Un accès au cache se produit lorsqu'une demande d'utilisateur génère la même clé de cache qu'une requête précédente, et que l'objet de cette clé de cache est dans le cache de l'emplacement périphérique et valide. Lorsqu'il y a un accès au cache, l'objet demandé est servi à la visionneuse à partir d'un emplacement périphérique CloudFront, ce qui présente les avantages suivants :
+ Réduction de la charge sur votre serveur d'origine
+ Latence réduite pour l'utilisateur

Vous pouvez obtenir de meilleures performances à partir de votre site Web ou de votre application lorsque vous avez un *taux d'accès au cache* plus élevé (une proportion plus élevée de requêtes de visionneuse entraînant un accès au cache). Une façon d'améliorer votre taux d'accès du cache est d'inclure uniquement les valeurs minimales nécessaires dans la clé de cache. Pour plus d'informations, consultez les sections suivantes.

Vous pouvez modifier les valeurs (chaînes de requête URL, en-têtes HTTP et cookies) dans la clé de cache à l'aide d'une [stratégie de cache](controlling-the-cache-key.md). (Vous pouvez également modifier la clé de cache en utilisant une [fonction Lambda@Edge](lambda-at-the-edge.md) ou une [fonction CloudFront](cloudfront-functions.md) sur une demande de l’utilisateur.) Avant de modifier la clé de cache, il est important de comprendre comment votre application est conçue et quand et comment elle peut servir différentes réponses en fonction des caractéristiques de la requête de la visionneuse. Lorsqu'une valeur dans la demande de visionneuse détermine la réponse renvoyée par votre origine, vous devez inclure cette valeur dans la clé de cache. Mais si vous incluez une valeur dans la clé de cache qui n'affecte pas la réponse renvoyée par votre origine, vous risquez de mettre en cache des objets en double.

## Clé de cache par défaut
<a name="cache-key-default"></a>

Par défaut, la clé de cache d'une distribution CloudFront inclut les informations suivantes :
+ Nom de domaine de la distribution CloudFront (par exemple, d111111abcdef8.cloudfront.net).
+ Chemin d'URL de l'objet demandé (par exemple, `/content/stories/example-story.html`)

**Note**  
La méthode `OPTIONS` est incluse dans la clé de cache pour les demandes `OPTIONS`. Cela signifie que les réponses aux demandes `OPTIONS` sont mises en cache séparément des réponses aux demandes `GET` et `HEAD`.

Les autres valeurs de la demande de visionneuse ne sont pas incluses dans la clé de cache, par défaut. Examinez la requête HTTP suivante provenant d'un navigateur Web.

```
            GET /content/stories/example-story.html?ref=0123abc&split-pages=false HTTP/1.1
            Host: d111111abcdef8.cloudfront.net
            User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/68.0
            Accept: text/html,*/*
            Accept-Language: en-US,en
            Cookie: session_id=01234abcd
            Referer: https://news.example.com/
```

Lorsqu'une demande d’utilisateur comme cet exemple arrive à un emplacement périphérique CloudFront, CloudFront utilise la clé de cache pour déterminer s'il y a un accès au cache. Par défaut, seuls les composants suivants de la demande sont inclus dans la clé de cache : `/content/stories/example-story.html` et `d111111abcdef8.cloudfront.net`. Si l'objet demandé n'est pas dans le cache (échec du cache), CloudFront envoie une demande à l'origine pour obtenir l'objet. Après avoir obtenu l'objet, CloudFront le renvoie à la visionneuse et le stocke dans le cache de l'emplacement périphérique.

Lorsque CloudFront reçoit une autre demande pour le même objet, tel que déterminé par la clé de cache, il sert l'objet mis en cache à la visionneuse immédiatement, sans envoyer de requête à l'origine. Prenons l'exemple de la demande HTTP suivante qui vient après la demande précédente.

```
            GET /content/stories/example-story.html?ref=xyz987&split-pages=true HTTP/1.1
            Host: d111111abcdef8.cloudfront.net
            User-Agent: Mozilla/5.0 AppleWebKit/537.36 Chrome/83.0.4103.116
            Accept: text/html,*/*
            Accept-Language: en-US,en
            Cookie: session_id=wxyz9876
            Referer: https://rss.news.example.net/
```

Cette demande concerne le même objet que la demande précédente, mais elle est différente de la demande précédente. Il a une chaîne de requête URL différente, différents en-têtes `User-Agent` et `Referer` et un cookie `session_id` différent. Cependant, aucune de ces valeurs ne fait partie de la clé de cache par défaut, de sorte que cette deuxième demande entraîne un accès au cache.

## Personnalisation de la clé de cache
<a name="cache-key-custom"></a>

Dans certains cas, vous pouvez inclure plus d'informations dans la clé de cache, même si cela peut entraîner moins de visites de cache. Vous spécifiez les éléments à inclure dans la clé de cache à l'aide d'une [stratégie de cache](controlling-the-cache-key.md).

Par exemple, si votre serveur d'origine utilise l'en-tête HTTP `Accept-Language` dans les demandes de l'utilisateur pour renvoyer un contenu différent en fonction de la langue de l'utilisateur, vous pouvez inclure cet en-tête dans la clé de cache. Lorsque vous faites cela, CloudFront utilise cet en-tête pour déterminer les accès au cache, et inclut l'en-tête dans les *demandes d'origine* (demandes que CloudFront envoie à l'origine en cas d'échec du cache).

Une conséquence potentielle de l'inclusion de valeurs supplémentaires dans la clé de cache est que CloudFront peut finir par mettre en cache des objets en double en raison de la variation qui peut se produire dans les demandes de l'utilisateur. Par exemple, les utilisateurs peuvent envoyer l'une des valeurs suivantes pour l'en-tête `Accept-Language` :
+ `en-US,en`
+ `en,en-US`
+ `en-US, en`
+ `en-US`

Toutes ces valeurs différentes indiquent que la langue de l'utilisateur est l'anglais, mais la variation peut faire en sorte que CloudFront mette en cache le même objet plusieurs fois. Cela peut réduire les accès au cache et augmenter le nombre de demandes d'origine. Vous pouvez éviter cette duplication en n'incluant pas l'en-tête `Accept-Language` dans la clé de cache et en configurant votre site Web ou votre application de manière à utiliser différentes URL pour le contenu dans différentes langues (par exemple, `/en-US/content/stories/example-story.html`).

Pour toute valeur donnée que vous avez l'intention d'inclure dans la clé de cache, vous devez vous assurer de comprendre combien de variations différentes de cette valeur peuvent apparaître dans les demandes de l'utilisateur. Pour certaines valeurs de demande, il est rarement logique de les inclure dans la clé de cache. Par exemple, l'en-tête `User-Agent` peut avoir des milliers de variations uniques, de sorte que ce n'est généralement pas un bon candidat à inclure dans la clé de cache. Les cookies qui ont des valeurs spécifiques à l'utilisateur ou à la session et qui sont uniques sur des milliers (voire des millions) de demandes ne sont pas non plus de bons candidats pour l'inclusion dans la clé de cache. Si vous incluez ces valeurs dans la clé de cache, chaque variation unique entraîne une autre copie de l'objet dans le cache. Si ces copies de l'objet ne sont pas uniques, ou si vous vous retrouvez avec un nombre si important d'objets légèrement différents que chaque objet ne reçoit qu'un petit nombre de visites de cache, vous pouvez envisager une approche différente. Vous pouvez exclure ces valeurs hautement variables de la clé de cache ou marquer des objets comme ne pouvant pas être mis en cache.

Faites preuve de prudence lors de la personnalisation de la clé de cache. Parfois, c'est souhaitable, mais cela peut avoir des conséquences inattendues telles que la mise en cache des objets en double, la réduction du taux d'accès du cache et l'augmentation du nombre de demandes d'origine. Si votre site web ou votre application d'origine doit recevoir certaines valeurs provenant des demandes de l'utilisateur pour l'analyse, la télémétrie ou d'autres utilisations, mais que ces valeurs ne modifient pas l'objet renvoyé par l'origine, utilisez une [stratégie de demande d'origine](controlling-origin-requests.md) pour inclure ces valeurs dans les demandes d'origine, mais *ne pas* les inclure dans la clé de cache.