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.
Servir des 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 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. Il peut être moins coûteux de servir des objets compressés que de les servir non compressés.
Rubriques
Configurer CloudFront pour compresser des objets
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)
-
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.
-
Définissez les paramètres TTL de la politique de cache sur une valeur supérieure à zéro. Si vous définissez la Durée de vie minimale valeur sur zéro, le contenu compressé CloudFront ne sera pas mis en cache.
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 l'CloudFrontAPI AWS CloudFormationou de l'API
Compress
, définissezEnableAcceptEncodingBrotli
les paramètresEnableAcceptEncodingGzip
, surtrue
.
Pour comprendre comment CloudFront compresse les objets, reportez-vous à la section suivante.
Comment fonctionne CloudFront la compression
-
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 incluentgzip
,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 via HTTPS. Ils ne supportent pas Brotli avec les requêtes HTTP.
-
À l'emplacement périphérique, CloudFront recherche dans le cache une copie compressée de l'objet demandé.
-
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. 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é.
-
-
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. -
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 Quand CloudFront compresse des objets. -
Si l'objet peut être compressé CloudFront , compressez-le, envoyez-le au visualiseur, puis ajoutez-le au cache.
-
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 visualiseur demande un objet mis en cache spécifique qui utilise la compression Gzip et qu'il accepte le format Gzip, les requêtes suivantes adressées au même objet renverront toujours la version Gzip, même s'il 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 fichier que CloudFront compresse.
Quand CloudFront compresse des objets
La liste suivante fournit plus d'informations sur les circonstances dans lesquelles CloudFront des objets sont 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 pasgzip
oubr
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 quedeflate
, les CloudFront supprime avant de transmettre la demande à l'origine.Lorsqu'il CloudFront est configuré pour compresser des objets, 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 possède déjà 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 Invalider des fichiers pour supprimer du contenu.
- 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 fichier que CloudFront compresse.
- Taille des objets CloudFront compressés
-
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, consultezComment 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
403
, ou404
. - 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. - 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 fichier que CloudFront compresse
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
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'ETag
en-tête valide et forte commence et se termine par un guillemet double ("
). 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èresW/
), 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 parW/
), CloudFront supprime l'ETag
en-tête et renvoie l'objet au visualiseur sans l'en-tête de ETag
réponse.
Pour de plus amples informations, veuillez consulter les pages suivantes dans les documents web MDN :
-
Directives
(en-tête HTTP ETag
) -
Validation faible
(requêtes conditionnelles HTTP)