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
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 permettre un affichage plus rapide des pages web pour vos utilisateurs, en particulier pour les fichiers JavaScript et CSS. De plus, le coût du transfert de données CloudFront repose 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.
Rubriques
Configuration de CloudFront pour compresser des objets
Pour configurer CloudFront afin de compresser les objets, mettez à jour le comportement de cache à partir duquel vous souhaitez diffuser les objets compressés.
Pour configurer CloudFront pour compresser des objets (console)
-
Connectez-vous à la console CloudFront
. -
Choisissez votre distribution, puis le Comportement à modifier.
-
Pour le paramètre Compresser automatiquement les objets, choisissez Oui.
-
Utilisez une politique de cache 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 pour utiliser la compression Brotli. Brotli ne prend pas en charge les anciens paramètres de cache.
-
Pour activer la compression à l’aide de CloudFormation ou de l’API CloudFront, définissez les paramètres
Compress,EnableAcceptEncodingGzip,EnableAcceptEncodingBrotlisurtrue.
Pour comprendre comment CloudFront compresse les objets, consultez la section suivante.
Fonctionnement de la compression CloudFront
-
Un utilisateur demande un objet. L'utilisateur inclut l'en-tête HTTP
Accept-Encodingdans la demande et les valeurs d'en-tête incluentgzip,brou les deux. Cela signifie qu'il prend en charge les objets compressés. Si l’utilisateur prend en charge Gzip et Brotli, CloudFront 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.
-
À l'emplacement périphérique, CloudFront recherche dans le cache une copie compressée de l'objet demandé.
-
En fonction de la présence ou non de l’objet compressé dans le cache, CloudFront effectue l’une des opérations suivantes :
-
Si l’objet compressé se trouve déjà dans le cache, CloudFront l’envoie à l’utilisateur 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 est déjà dans le cache, CloudFront peut l'envoyer à l'utilisateur sans transférer la demande à l'origine. Par exemple, cela peut se produire lorsque CloudFront a précédemment ignoré la compression. Lorsque cela se produit, CloudFront met en cache l'objet non compressé et continue de le servir jusqu'à ce que l'objet expire, soit expulsé ou soit invalidé.
-
-
Si l’origine retourne un objet compressé, (comme indiqué par l’en-tête
Content-Encodingdans la réponse HTTP), CloudFront envoie l’objet compressé à l’utilisateur, l’ajoute au cache et ignore les étapes restantes. CloudFront ne compresse pas à nouveau l'objet. -
Si l’origine renvoie un objet non compressé à CloudFront sans l’en-tête
Content-Encodingdans la réponse HTTP, CloudFront détermine si l’objet peut être compressé. Pour plus d’informations, consultez Conditions de compression. -
Si l’objet peut être compressé, CloudFront le compresse, l’envoie à l’utilisateur et l’ajoute au cache.
-
Si d’autres utilisateurs demandent ensuite le même objet, CloudFront renvoie la première version déjà 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 peut compresser des objets que CloudFront ne compresse pas. Pour plus d’informations, consultez Types de fichiers compressés par CloudFront.
Conditions de compression
La liste suivante fournit plus d’informations sur les scénarios dans lesquels CloudFront ne compresse pas d’objets.
- La demande utilise HTTP 1.0
-
Si une demande adressée à CloudFront utilise HTTP 1.0, CloudFront supprime l’en-tête
Accept-Encodinget ne compresse pas l’objet dans la réponse. Accept-EncodingEn-tête de demande-
Si l’en-tête
Accept-Encodingest absent de la demande de l’utilisateur ou s’il ne contient pasgzipoubren tant que valeur, CloudFront ne compresse pas l’objet dans la réponse. Si l'en-têteAccept-Encodinginclut des valeurs supplémentaires telles quedeflate, CloudFront les supprime avant de transmettre la demande à l'origine.Si CloudFront est configuré pour compresser des objets, il inclut l'en-tête
Accept-Encodingdans la clé de cache et dans les demandes d'origine automatiquement. - Le contenu est déjà mis en cache lorsque vous configurez CloudFront pour compresser des objets
-
CloudFront compresse les objets lorsqu'il les obtient à partir de l'origine. Lorsque vous configurez CloudFront pour compresser les objets, CloudFront ne compresse pas ceux qui ont déjà été mis en cache dans les emplacements périphériques. De plus, quand un objet en cache expire dans un emplacement périphérique et que CloudFront transfère une autre demande de l’objet à votre origine, CloudFront ne compresse pas l’objet lorsque votre origine retourne 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 voulez que CloudFront compresse les objets qui sont déjà en cache dans les emplacements périphériques, vous devez invalider ces objets. Pour plus d'informations, consultez Invalidation de fichiers pour supprimer du contenu.
- L'origine est déjà configurée pour compresser les objets
-
Si vous configurez CloudFront pour compresser les objets et que l’origine compresse également les objets, l’origine devrait inclure un en-tête
Content-Encoding. Cet en-tête indique à CloudFront que l’objet est déjà compressé. CloudFront ne compresse pas l’objet si la réponse d’une origine inclut l’en-têteContent-Encoding, quelle qu’en soit la valeur. CloudFront envoie la réponse à l'utilisateur et met l'objet en cache dans l'emplacement périphérique. - Types de fichiers compressés par CloudFront
-
Pour obtenir la liste complète, consultez Types de fichiers compressés par CloudFront.
- Taille des objets compressés par CloudFront
-
CloudFront compresse les objets dont la taille est comprise entre 1 000 octets et 10 000 000 octets.
Content-LengthEn-tête-
L'origine doit inclure dans la réponse un en-tête
Content-Lengthdans la réponse, que CloudFront utilise pour déterminer si la taille de l'objet se trouve dans la plage que CloudFront compresse. Si l’en-têteContent-Lengthest manquant, contient une valeur non valide ou contient une valeur en dehors de la plage de tailles que CloudFront compresse, CloudFront ne compresse pas l’objet. Pour plus d’informations sur la façon dont CloudFront traite les objets volumineux pouvant dépasser cette plage de taille, consultez Comment CloudFront traite les demandes partielles pour un objet (plageGETs). - 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,403ou404. - La réponse n'a pas de corps
-
Lorsque la réponse HTTP de l'origine n'a pas de corps, CloudFront ne peut rien compresser.
ETagEn-tête-
CloudFront modifie parfois l'en-tête
ETagdans la réponse HTTP lorsqu'il compresse des objets. Pour plus d’informations, consultez ETagConversion de l'en-tête . - CloudFront ignore la compression
-
CloudFront compresse les objets dans la mesure du possible. Dans de rares cas, CloudFront omet de compresser un objet lorsque la charge de trafic est élevée. CloudFront prend cette décision en fonction de divers facteurs, notamment la capacité de l'hôte. Si CloudFront ignore la compression pour un objet, il met en cache l'objet non compressé et continue à le servir aux utilisateurs jusqu'à ce que l'objet expire, soit expulsé ou soit invalidé.
Types de fichiers compressés par CloudFront
Si vous configurez CloudFront pour compresser les objets, CloudFront compresse uniquement les objets ayant les valeurs suivantes dans l'en-tête de la réponse Content-Type :
-
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
ETagConversion de l'en-tête
Lorsque l'objet non compressé de l'origine inclut un en-tête HTTP ETag valide et fort et que CloudFront compresse cet objet, CloudFront convertit également la valeur d'en-tête ETag fort en un ETag faible, et renvoie la valeur ETag faible à l'utilisateur. 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, à CloudFront 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.
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 valeur d'en-tête ETag faible (une valeur qui commence par les caractères W/), CloudFront ne modifie pas cette valeur et la renvoie à l'utilisateur telle qu'elle a été reçue de l'origine.
Lorsque l'objet de l'origine inclut une valeur d'en-tête ETag non valide (la valeur ne commence pas par " ou par W/), CloudFront supprime l'en-tête ETag et renvoie l'objet à l'utilisateur sans l'en-tête de réponse ETag.
Pour plus d’informations, consultez les pages suivantes dans les documents web MDN :
-
Directives
(en-tête HTTP ETag) -
Validation faible
(requêtes conditionnelles HTTP)