Liste de contrôle de compression des actifs statiques S3
Parcourez cette liste de contrôle étape par étape pour configurer votre compartiment AWS S3 et votre distribution CloudFront afin de servir correctement les actifs statiques GZIP et Brotli précompressés. La liste de contrôle de compression des actifs statiques S3 couvre la stratégie de compartiment, le téléchargement de fichiers précompressés avec les métadonnées de codage de contenu correctes, la stratégie de cache CloudFront, les en-têtes Vary et les commandes de vérification - chacune avec des extraits AWS CLI et Terraform prêts à copier. Tout le contenu s'exécute dans votre navigateur - aucune inscription requise.
Enable public read access (or use CloudFront OAC)
For public static sites, configure the bucket policy to allow s3:GetObject. For private assets served via CloudFront, use Origin Access Control (OAC) instead of public access.
Enable static website hosting (if serving directly from S3)
Go to S3 → Bucket → Properties → Static website hosting → Enable. Set index.html as the index document. Skip this step if you are serving exclusively through CloudFront.
Configure CORS for font and API assets (if needed)
If your S3 bucket serves fonts or JSON assets loaded cross-origin, add a CORS configuration to allow the correct origins.
Upload pre-compressed .gz files alongside originals
Pre-compress your static assets at build time and upload both the original and .gz version. S3 does not compress on-the-fly - you must upload pre-compressed files.
Upload pre-compressed .br files for Brotli support
Upload Brotli-compressed versions of your assets. CloudFront can serve .br files to clients that send Accept-Encoding: br.
Set correct Content-Type on all uploaded files
S3 must serve the correct Content-Type for each asset - not the MIME type of the compressed wrapper. Set Content-Type to the original file type (e.g. application/javascript for .js.gz).
Set Cache-Control headers on uploaded assets
Set long-lived Cache-Control headers on versioned/hashed assets and short-lived headers on index.html and other non-versioned files.
Create a CloudFront distribution with S3 as origin
Create a CloudFront distribution pointing to your S3 bucket. Use the S3 REST endpoint (not the website endpoint) for OAC support and better performance.
Enable CloudFront automatic compression
In CloudFront → Behaviors → Edit → Compress objects automatically → Yes. This enables CloudFront to compress responses on-the-fly for objects not already compressed. For pre-compressed assets, CloudFront will pass through the Content-Encoding header.
Configure cache policy to forward Accept-Encoding
Create a CloudFront cache policy that includes Accept-Encoding in the cache key. This ensures CloudFront caches separate versions for GZIP, Brotli, and uncompressed responses.
Enforce HTTPS with redirect-to-https viewer protocol policy
Set the viewer protocol policy to "Redirect HTTP to HTTPS" to ensure all traffic is encrypted. This is required for Brotli - browsers only send Accept-Encoding: br over HTTPS.
Add Vary: Accept-Encoding response header
Configure a CloudFront response headers policy to add Vary: Accept-Encoding. This tells downstream caches (browsers, CDN edge nodes) to cache separate versions for different encodings.
Add security headers via CloudFront response headers policy
Use a CloudFront managed response headers policy (SecurityHeadersPolicy) or create a custom one with X-Content-Type-Options, X-Frame-Options, and Strict-Transport-Security.
Verify GZIP compression is working
Use curl to confirm CloudFront is serving GZIP-compressed responses with the correct Content-Encoding header.
Verify Brotli compression is working
Confirm CloudFront serves Brotli-compressed responses when the client sends Accept-Encoding: br.
Verify CloudFront cache hit ratio
Check the X-Cache response header to confirm CloudFront is caching compressed responses. "Hit from cloudfront" means the response was served from cache.
Measure actual transfer size savings
Use curl with --compressed to measure the actual transfer size vs the uncompressed size and confirm the expected savings.
Quick Reference: S3 + CloudFront Compression Architecture
Browser │ Accept-Encoding: gzip, br ▼ CloudFront Edge │ Checks cache key (includes Accept-Encoding) │ Cache HIT → serve cached compressed response │ Cache MISS → forward to S3 origin ▼ S3 Origin │ Returns pre-compressed file (app.js with Content-Encoding: gzip) │ OR returns uncompressed file (CloudFront compresses on-the-fly) ▼ CloudFront Edge │ Caches response keyed by Accept-Encoding │ Adds Vary: Accept-Encoding header ▼ Browser │ Decompresses response transparently └ Renders page
Pourquoi utiliser notre liste de contrôle de compression des actifs statiques S3 ?
- Configuration complète de la compression S3 en un seul endroit : la liste de contrôle de compression des actifs statiques S3 couvre chaque étape : stratégie de compartiment, téléchargement de fichiers précompressés, configuration CloudFront, en-têtes Vary et commandes de vérification - afin que vous ne manquiez pas une étape critique qui interrompt la compression.
- Liste de contrôle de compression S3 sécurisée en ligne : tout le contenu de la liste de contrôle est entièrement généré dans votre navigateur. Aucune information d'identification AWS, nom de compartiment ou nom de domaine n'est envoyé à un serveur, ce qui est sûr pour la planification des configurations de compression S3 et CloudFront de production.
- Extraits de configuration pour chaque étape : chaque élément de la liste de contrôle comprend un extrait de configuration prêt à copier (commandes AWS CLI, ressources Terraform, stratégies de compartiment et commandes de vérification curl) afin que vous puissiez mettre en œuvre chaque étape immédiatement.
- 100 % gratuit pour toujours : la liste de contrôle de compression des actifs statiques S3 est entièrement gratuite, sans inscription, sans niveau premium, sans limites et sans publicité. Utilisez-le autant de fois que nécessaire, pour toujours.
Pourquoi la compression S3 nécessite une pré-compression
Contrairement à Nginx ou Apache, Amazon S3 ne compresse pas les réponses à la volée. S3 est un service de stockage d'objets : il sert les fichiers exactement tels qu'ils ont été téléchargés. Pour servir des ressources compressées à partir de S3, vous devez pré-compresser vos fichiers au moment de la construction et télécharger les versions originale et compressée avec les métadonnées Content-Encoding correctes. Notre liste de contrôle de compression des actifs statiques S3 vous guide à travers chaque étape de ce processus, de la configuration du compartiment à la configuration et à la vérification de la politique de cache CloudFront.
Fonctionnement de la liste de contrôle de compression S3
- Parcourez chaque catégorie : la liste de contrôle est organisée en cinq catégories : configuration du compartiment S3, téléchargement de fichiers précompressés, configuration CloudFront, en-têtes de réponse et vérification. Cliquez sur chaque élément pour développer les extraits de configuration et les avertissements.
- Cochez les étapes terminées : cliquez sur l'icône en forme de cercle à côté de chaque élément pour le marquer comme terminé. La barre de progression suit votre achèvement global de tous les éléments de la liste de contrôle.
- Copier et déployer : chaque élément comprend une commande AWS CLI, une ressource Terraform ou une commande de vérification curl prête à être copiée - cliquez sur Copier pour l'utiliser immédiatement dans votre terminal ou pipeline.
Ce que couvre la liste de contrôle
- Configuration du compartiment S3 : stratégie de compartiment pour la lecture publique ou CloudFront OAC, l'hébergement de sites Web statiques et la configuration CORS pour les polices d'origine croisée et les ressources API.
- Téléchargement de fichiers précompressés : comment télécharger des fichiers.gz et.br avec les métadonnées Content-Encoding, Content-Type et Cache-Control correctes à l'aide de l'AWS CLI.
- Configuration CloudFront : configuration de la distribution, compression automatique, politique de cache avec Accept-Encoding dans la clé de cache et application HTTPS.
- Vérification : commandes curl pour confirmer que GZIP et Brotli fonctionnent, vérifications du taux de réussite du cache et mesure de la taille de transfert.
S3 + CloudFront vs compression à la volée
La pré-compression + S3 est plus efficace que la compression à la volée pour les ressources statiques : le coût du processeur de compression est payé une fois au moment de la construction, et non à chaque demande. CloudFront peut également compresser les réponses à la volée pour les objets non déjà compressés (objets ≥1 000 octets), mais la pré-compression vous donne des niveaux de compression maximaux (niveau GZIP 9, qualité Brotli 11) que la compression à la volée de CloudFront n'utilise pas. Pour de meilleures performances, précompressez vos ressources et téléchargez-les sur S3 avec les métadonnées correctes - CloudFront transmettra l'en-tête Content-Encoding de manière transparente.
Foire aux questions
La liste de contrôle de compression des actifs statiques S3 est un guide étape par étape pour configurer AWS S3 et CloudFront afin de servir correctement les actifs statiques GZIP et Brotli précompressés. Il couvre la politique du compartiment, le téléchargement de fichiers précompressés avec les métadonnées correctes, la politique du cache CloudFront, les en-têtes Vary et les commandes de vérification.
Non. Amazon S3 est un service de stockage d'objets : il sert les fichiers exactement tels qu'ils ont été téléchargés. Pour servir des ressources compressées à partir de S3, vous devez pré-compresser vos fichiers au moment de la construction et les télécharger avec les métadonnées Content-Encoding correctes. CloudFront peut compresser les réponses à la volée pour les objets non compressés, mais la précompression offre de meilleurs taux de compression.
Oui. La liste de contrôle de compression des actifs statiques S3 est 100 % gratuite, sans inscription, sans abonnement, sans limites et sans publicité. Tout le contenu de la liste de contrôle est généré dans votre navigateur : aucune information d'identification AWS ou donnée de configuration n'est envoyée à un serveur.
Téléchargez le fichier compressé en utilisant le nom de fichier d'origine (par exemple app.js, pas app.js.gz) et définissez Content-Encoding : gzip et Content-Type : application/javascript. Cela indique aux navigateurs de décompresser la réponse de manière transparente. Si vous téléchargez en tant que app.js.gz sans Content-Encoding, les navigateurs le téléchargeront sous forme de fichier binaire.
Activez « Compresser les objets automatiquement » dans vos paramètres de comportement CloudFront et créez une stratégie de cache avec EnableAcceptEncodingBrotli : true. CloudFront servira Brotli aux clients qui envoient Accept-Encoding : br. Remarque : Brotli est négocié uniquement via HTTPS.
Sans Accept-Encoding dans la clé de cache, CloudFront ne met en cache qu'une seule version de chaque objet. Si une réponse compressée est mise en cache et servie à un client qui ne prend pas en charge GZIP, le navigateur reçoit un contenu corrompu. L'inclusion d'Accept-Encoding dans la clé de cache garantit que CloudFront met en cache des versions distinctes pour chaque encodage.
La compression à la volée CloudFront utilise GZIP niveau 6 et compresse uniquement les objets ≥ 1 000 octets. La pré-compression utilise des niveaux maximum (niveau GZIP 9, qualité Brotli 11) et télécharge les fichiers compressés sur S3. La pré-compression est plus efficace pour les actifs statiques puisque le coût du processeur est payé une fois au moment de la construction.
Exécutez : `curl -H "Accept-Encoding: gzip" -I https://YOUR-CLOUDFRONT-DOMAIN/app.js` et recherchez `Content-Encoding: gzip`. Pour Brotli : `curl -H "Accept-Encoding: br" -I https://YOUR-CLOUDFRONT-DOMAIN/app.js` et recherchez `Content-Encoding: br`.
Utilisez le point de terminaison S3 REST avec CloudFront Origin Access Control (OAC). Le point de terminaison du site Web S3 ne prend pas en charge OAC, nécessite un accès au compartiment public et ne prend pas en charge HTTPS de CloudFront vers S3. Le point de terminaison REST avec OAC est plus sécurisé et prend en charge toutes les fonctionnalités CloudFront.