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
Vous pouvez l'utiliser CloudFront pour compresser automatiquement certains types d'objets (fichiers) et distribuer les objets compressés lorsque les utilisateurs (navigateurs Web ou autres clients) les prennent en charge. Les spectateurs indiquent leur support pour les objets compressés avec l'Accept-Encoding
HTTPen-tête.
CloudFront peut compresser des objets en utilisant les formats de compression Gzip et Brotli. Lorsque le lecteur prend en charge les deux formats et que les deux sont présents sur le serveur de cache atteint, il CloudFront préfère Brotli. Si un seul format de compression est présent dans le serveur de cache, il le CloudFront renvoie.
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 spécifique utilisant la compression Gzip et que l'objet est mis en cache, et que le visualiseur accepte le format Gzip, les demandes suivantes adressées au même objet renverront toujours la version Gzip, même si le visualiseur accepte à la fois Brotli et Gzip.
Note
Les navigateurs Web Chrome et Firefox prennent en charge la compression Brotli uniquement lorsque la demande est envoyée via. HTTPS Ces navigateurs ne prennent pas en charge les requêtes Brotli. HTTP
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). En particulier pour CSS les fichiers JavaScript et, des téléchargements plus rapides peuvent accélérer le rendu des pages Web pour vos utilisateurs. En outre, étant donné que le coût du transfert de CloudFront données est basé sur la quantité totale de données diffusées, le service d'objets compressés peut être moins coûteux que de les servir non compressés.
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 (voirTypes de fichier que CloudFront compresse). Si votre origine renvoie un objet compressé à CloudFront, CloudFront détecte que l'objet est compressé en fonction de la présence d'un Content-Encoding
en-tête et ne le compresse pas à nouveau.
Configurer CloudFront pour compresser des objets
CloudFront Pour configurer la compression des objets, mettez à jour le comportement du cache que vous souhaitez appliquer aux objets compressés en procédant comme suit :
-
Assurez-vous que le paramètre Compress objects automatically (Compresser automatiquement les objets) est défini sur Yes (Oui). (Dans AWS CloudFormation ou dans CloudFront API, réglé
Compress
surtrue
.) -
Utilisez une stratégie de cache pour spécifier les paramètres de mise en cache et assurez-vous que les paramètres Gzip et Brotli sont tous les deux activés. (Dans AWS CloudFormation ou le CloudFrontAPI, set
EnableAcceptEncodingGzip
etEnableAcceptEncodingBrotli
totrue
.) -
Assurez-vous que les TTL valeurs de la politique de cache sont définies sur une valeur supérieure à zéro. Lorsque vous définissez les TTL valeurs sur zéro, la mise en cache du contenu compressé est désactivée.
Pour mettre à jour un comportement de cache, vous pouvez utiliser l'un des outils suivants :
Comment fonctionne CloudFront la compression
Lorsque vous configurez CloudFront pour compresser des objets (voir la section précédente), voici comment cela fonctionne :
-
Un utilisateur demande un objet. Le visualiseur inclut l'
Accept-Encoding
HTTPen-tête dans la demande, et la valeur d'en-tête inclutgzip
br
, ou les deux. Cela signifie qu'il prend en charge les objets compressés. Lorsque le lecteur supporte à la fois Gzip et Brotli, CloudFront il préfère Brotli.Note
Les navigateurs Web Chrome et Firefox prennent en charge la compression Brotli uniquement lorsque la demande est envoyée via. HTTPS Ces navigateurs ne prennent pas en charge les requêtes Brotli. HTTP
-
À l'emplacement périphérique, CloudFront recherche dans le cache une copie compressée de l'objet demandé.
-
Si l'objet compressé se trouve déjà dans le cache, il l' CloudFront envoie au visualiseur et ignore les étapes restantes.
Si l'objet compressé n'est 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 la présence d'un
Content-Encoding
en-tête dans la HTTP réponse, CloudFront envoie l'objet compressé au visualiseur, l'ajoute au cache et ignore l'étape restante. CloudFront ne compresse pas à nouveau l'objet.Si l'origine renvoie un objet non compressé à CloudFront (il n'y a pas
Content-Encoding
d'en-tête dans la HTTP réponse), CloudFront détermine si l'objet est compressible. Pour plus d'informations sur la manière de CloudFront déterminer si un objet est compressible, consultez la section suivante. -
Si l'objet est compressible, CloudFront compressez-le, envoyez-le au visualiseur et ajoutez-le au cache. (Dans de rares cas, CloudFront cela peut ignorer la compression et envoyer l'objet décompressé au visualiseur.)
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 la HTTP version 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. - Contenu dynamique
-
CloudFront ne compresse pas toujours le contenu dynamique. Les réponses pour le contenu dynamique sont parfois compressées, et parfois elles ne le sont pas.
- 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'HTTPétat 304, ce qui 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 indiquant 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 des types de fichiers CloudFront compressés, consultezTypes 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 ne compresse pas l'objet. - HTTPcode d'état de la réponse
-
CloudFront compresse les objets uniquement lorsque le code d'HTTPétat de la réponse est
200
403
, ou404
. - La réponse n'a pas de corps
-
Lorsque la HTTP réponse 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 HTTP réponse lorsqu'il 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. 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 ETag
HTTP en-tête 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 ETag
valeur faible et l'utiliser pour envoyer des demandes conditionnelles avec l'If-None-Match
HTTPen-tête. 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 par des guillemets doubles ("
). Pour convertir la ETag
valeur forte en valeur faible, CloudFront ajoute les caractères W/
au début de la ETag
valeur 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 plus d'informations, consultez les pages suivantes de la documentation MDN Web :
-
Directives
( ETag
HTTPen-tête) -
Validation faible
(demandes HTTP conditionnelles)