

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.

# Diffusion de fichiers compressés
<a name="ServingCompressedFiles"></a>

Lorsque les objets demandés sont compressés, les téléchargements peuvent être plus rapides, parce que les objets sont plus petits (dans certains cas, inférieurs à un quart de la taille de l'objet original). Des téléchargements plus rapides peuvent accélérer le rendu des pages Web pour vos utilisateurs, en particulier pour JavaScript les fichiers CSS. En outre, le coût du transfert de CloudFront données est basé sur la quantité totale de données diffusées. La diffusion d’objets compressés peut être moins coûteux que la diffusion d’objets non compressés.

**Topics**
+ [

## Configurer CloudFront pour compresser des objets
](#compressed-content-cloudfront-configuring)
+ [

## Comment fonctionne CloudFront la compression
](#compressed-content-cloudfront-how-it-works)
+ [

## Conditions de compression
](#compressed-content-cloudfront-notes)
+ [

## Types de fichiers qui CloudFront compressent
](#compressed-content-cloudfront-file-types)
+ [

## Conversion de l'en-tête `ETag`
](#compressed-content-cloudfront-etag-header)

## Configurer CloudFront pour compresser des objets
<a name="compressed-content-cloudfront-configuring"></a>

 CloudFront Pour configurer la compression des objets, mettez à jour le comportement du cache que vous souhaitez utiliser pour les objets compressés.

**Pour configurer CloudFront la compression d'objets (console)**

1. Connectez-vous à la [console CloudFront](https://console.aws.amazon.com/cloudfront/v4/home).

1. Choisissez votre distribution, puis le **Comportement** à modifier.

1. Pour le paramètre **Compresser automatiquement les objets**, choisissez **Oui**. 

1. Utilisez une [politique de cache](controlling-the-cache-key.md) pour spécifier les paramètres de mise en cache et activez les formats de compression **Gzip** et **Brotli**.

**Remarques**  
Vous devez utiliser des [politiques de cache](controlling-the-cache-key.md) pour utiliser la compression Brotli. Brotli ne prend pas en charge les anciens paramètres de cache.
Pour activer la compression à l'aide de l'[CloudFront](https://docs.aws.amazon.com/cloudfront/latest/APIReference/Welcome.html)API [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html)ou de l'API`Compress`, définissez `EnableAcceptEncodingBrotli` les paramètres`EnableAcceptEncodingGzip`, sur`true`.

Pour comprendre comment CloudFront compresse les objets, reportez-vous à la section suivante.

## Comment fonctionne CloudFront la compression
<a name="compressed-content-cloudfront-how-it-works"></a>

1. Un utilisateur demande un objet. L'utilisateur inclut l'en-tête HTTP `Accept-Encoding` dans la demande et les valeurs d'en-tête incluent `gzip`, `br` ou les deux. Cela signifie qu'il prend en charge les objets compressés. Lorsque le visualiseur supporte à la fois Gzip et Brotli, CloudFront il utilise Brotli.
**Note**  
Les navigateurs web Chrome et Firefox prennent en charge la compression Brotli uniquement lorsque la demande est envoyée en HTTPS. Ils ne prennent pas en charge Brotli avec les demandes HTTP.

1. À l'emplacement périphérique, CloudFront recherche dans le cache une copie compressée de l'objet demandé.

1. Selon que l'objet compressé se trouve dans le cache ou non, CloudFront effectue l'une des opérations suivantes :
   + Si l'objet compressé est déjà dans le cache, CloudFront envoie l'objet au visualiseur et ignore les étapes restantes.
   + Si l'objet compressé ne se trouve pas dans le cache, CloudFront transmet la demande à l'origine.
**Note**  
Si une copie non compressée de l'objet se trouve déjà dans le cache, vous CloudFront pouvez l'envoyer au visualiseur sans transmettre la demande à l'origine. Par exemple, cela peut se produire lorsque la [compression a CloudFront été précédemment ignorée](#compression-skipped). Dans ce cas, met en CloudFront cache l'objet non compressé et continue de le servir jusqu'à ce que l'objet expire, soit expulsé ou soit invalidé.

1. Si l'origine renvoie un objet compressé (comme indiqué par l'`Content-Encoding`en-tête de la réponse HTTP), CloudFront envoie l'objet compressé au visualiseur, l'ajoute au cache et ignore les étapes restantes. CloudFront ne compresse pas à nouveau l'objet.

1. Si l'origine renvoie un objet non compressé CloudFront sans l'`Content-Encoding`en-tête dans la réponse HTTP, CloudFront elle détermine si l'objet peut être compressé. Pour de plus amples informations, veuillez consulter [Conditions de compression](#compressed-content-cloudfront-notes).

1. Si l'objet peut être compressé CloudFront , compressez-le, envoyez-le au visualiseur, puis ajoutez-le au cache. 

1. S'il y a des demandes ultérieures du spectateur pour le même objet, CloudFront renvoie la première version mise en cache. Par exemple, si un utilisateur demande un objet spécifique mis en cache utilisant la compression Gzip et que l’utilisateur *accepte* le format Gzip, les demandes ultérieures pour ce même objet renverront toujours la version Gzip, même si l’utilisateur accepte à la fois Brotli et Gzip.

Certaines origines personnalisées peuvent également compresser des objets. Votre origine est peut-être en mesure de compresser des objets qui CloudFront ne le sont pas. Pour de plus amples informations, veuillez consulter [Types de fichiers qui CloudFront compressent](#compressed-content-cloudfront-file-types).

## Conditions de compression
<a name="compressed-content-cloudfront-notes"></a>

La liste suivante fournit plus d'informations sur les scénarios dans lesquels les objets CloudFront ne sont pas compressés.

**La demande utilise HTTP 1.0**  
Si une demande CloudFront utilise le protocole HTTP 1.0, CloudFront supprime l'`Accept-Encoding`en-tête et ne compresse pas l'objet dans la réponse.

**En-tête de demande `Accept-Encoding`**  
Si l'`Accept-Encoding`en-tête est absent de la demande du visualiseur, ou s'il ne contient pas `gzip` ou `br` ne contient pas de valeur, l'objet CloudFront n'est pas compressé dans la réponse. Si l'`Accept-Encoding`en-tête inclut des valeurs supplémentaires telles que`deflate`, les CloudFront supprime avant de transmettre la demande à l'origine.  
Lorsqu'il CloudFront est [configuré pour compresser des objets](#compressed-content-cloudfront-configuring), il inclut automatiquement l'`Accept-Encoding`en-tête dans la clé de cache et dans les demandes d'origine.

**Le contenu est déjà mis en cache lorsque vous configurez CloudFront pour compresser des objets**  
CloudFront compresse les objets lorsqu'il les extrait de l'origine. Lorsque vous configurez CloudFront pour compresser des objets, CloudFront cela ne compresse pas les objets déjà mis en cache dans des emplacements périphériques. En outre, lorsqu'un objet mis en cache expire dans un emplacement périphérique et CloudFront transmet une autre demande pour l'objet à votre origine, CloudFront cela ne compresse pas l'objet lorsque votre origine renvoie un code d'état HTTP 304. Cela signifie que l’emplacement périphérique dispose déjà de la dernière version de l’objet. Si vous souhaitez CloudFront compresser des objets déjà mis en cache dans des emplacements périphériques, vous devez invalider ces objets. Pour de plus amples informations, veuillez consulter [Invalidation de fichiers pour supprimer du contenu](Invalidation.md).

**L'origine est déjà configurée pour compresser les objets**  
Si vous configurez CloudFront pour compresser des objets et que l'origine compresse également des objets, l'origine doit inclure un `Content-Encoding` en-tête. Cet en-tête indique CloudFront que l'objet est déjà compressé. Lorsqu'une réponse provenant d'une origine inclut l'`Content-Encoding`en-tête, CloudFront elle ne compresse pas l'objet, quelle que soit la valeur de l'en-tête. CloudFrontenvoie la réponse au spectateur et met en cache l'objet à l'emplacement périphérique.

**Types de fichiers qui CloudFront compressent**  
Pour obtenir la liste complète, consultez [Types de fichiers qui CloudFront compressent](#compressed-content-cloudfront-file-types).

**Taille des objets qui CloudFront compressent**  
CloudFront compresse les objets dont la taille est comprise entre 1 000 et 10 000 000 octets.

**En-tête `Content-Length`**  
L'origine doit inclure un `Content-Length` en-tête dans la réponse, qui CloudFront permet de déterminer si la taille de l'objet se situe dans la plage de CloudFront compression. Si l'`Content-Length`en-tête est absent, contient une valeur non valide ou contient une valeur en dehors de la plage de tailles qui CloudFront compresse, CloudFront cela ne compresse pas l'objet. Pour plus d'informations sur le CloudFront traitement des objets de grande taille pouvant dépasser la plage de tailles, consultez[Comment CloudFront traite les demandes partielles pour un objet (plage GETs)](RangeGETs.md).

**Code d'état HTTP de la réponse**  
CloudFront compresse les objets uniquement lorsque le code d'état HTTP de la réponse est `200``403`, ou`404`.

**La réponse n'a pas de corps**  
Lorsque la réponse HTTP de l'origine n'a pas de corps, il n'y a rien CloudFront à compresser.

**En-tête `ETag`**  
CloudFront modifie parfois l'`ETag`en-tête de la réponse HTTP lorsqu'elle compresse des objets. Pour de plus amples informations, veuillez consulter [Conversion de l'en-tête `ETag`](#compressed-content-cloudfront-etag-header).

**CloudFront ignore la compression**  
CloudFront compresse les objets au mieux. Dans de rares cas, CloudFront ignore la compression d'un objet en cas de CloudFront forte charge de trafic. CloudFront prend cette décision en fonction de divers facteurs, y compris la capacité de l'hôte. Si la compression CloudFront d'un objet est ignorée, il met en cache l'objet non compressé et continue de le servir aux utilisateurs jusqu'à ce que l'objet expire, soit expulsé ou soit invalidé.

## Types de fichiers qui CloudFront compressent
<a name="compressed-content-cloudfront-file-types"></a>

Si vous configurez CloudFront pour compresser des objets, compresse CloudFront uniquement les objets dont l'en-tête de `Content-Type` réponse contient l'une des valeurs suivantes :
+ `application/dash+xml`
+ `application/eot`
+ `application/font`
+ `application/font-sfnt`
+ `application/javascript`
+ `application/json`
+ `application/opentype`
+ `application/otf`
+ `application/pdf`
+ `application/pkcs7-mime`
+ `application/protobuf`
+ `application/rss+xml`
+ `application/truetype`
+ `application/ttf`
+ `application/vnd.apple.mpegurl`
+ `application/vnd.mapbox-vector-tile`
+ `application/vnd.ms-fontobject`
+ `application/wasm`
+ `application/xhtml+xml`
+ `application/xml`
+ `application/x-font-opentype`
+ `application/x-font-truetype`
+ `application/x-font-ttf`
+ `application/x-httpd-cgi`
+ `application/x-javascript`
+ `application/x-mpegurl`
+ `application/x-opentype`
+ `application/x-otf`
+ `application/x-perl`
+ `application/x-ttf`
+ `font/eot`
+ `font/opentype`
+ `font/otf`
+ `font/ttf`
+ `image/svg+xml`
+ `text/css`
+ `text/csv`
+ `text/html`
+ `text/javascript`
+ `text/js`
+ `text/plain`
+ `text/richtext`
+ `text/tab-separated-values`
+ `text/xml`
+ `text/x-component`
+ `text/x-java-source`
+ `text/x-script`
+ `vnd.apple.mpegurl`

## Conversion de l'en-tête `ETag`
<a name="compressed-content-cloudfront-etag-header"></a>

Lorsque l'objet décompressé depuis l'origine inclut un en-tête `ETag` HTTP valide et fort, et qu'il CloudFront compresse l'objet, convertit CloudFront également la valeur d'`ETag`en-tête forte en valeur faible `ETag` et renvoie la `ETag` valeur faible au visualiseur. Les utilisateurs peuvent stocker la valeur `ETag` faible et l'utiliser pour envoyer des demandes conditionnelles avec l'en-tête HTTP `If-None-Match`. Cela permet aux utilisateurs et à l'origine de traiter les versions compressées et non compressées d'un objet comme sémantiquement équivalentes, ce qui réduit les transferts de données inutiles. CloudFront

Une valeur d’en-tête `ETag` valide et forte commence et se termine par des guillemets doubles (`"`). Pour convertir la valeur `ETag` forte en valeur faible, CloudFront ajoute les caractères `W/` au début de la valeur `ETag` forte.

Lorsque l'objet de l'origine inclut une faible valeur d'`ETag`en-tête (une valeur qui commence par les caractères`W/`), CloudFront ne modifie pas cette valeur et la renvoie au visualiseur telle qu'elle a été reçue de l'origine.

Lorsque l'objet de l'origine inclut une valeur d'`ETag`en-tête non valide (la valeur ne commence pas par `"` ou par`W/`), CloudFront supprime l'`ETag`en-tête et renvoie l'objet au visualiseur sans l'en-tête de `ETag` réponse.

Pour plus d’informations, consultez les pages suivantes dans les documents web MDN :
+ [Directives](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag#Directives) (en-tête HTTP `ETag`)
+ [Validation faible](https://developer.mozilla.org/en-US/docs/Web/HTTP/Conditional_requests#Weak_validation) (requêtes conditionnelles HTTP)
+ [En-tête HTTP If-None-Match](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)