Lista de verificação de compactação de ativos estáticos S3
Siga esta lista de verificação passo a passo para configurar seu bucket AWS S3 e distribuição do CloudFront para servir corretamente ativos estáticos GZIP e Brotli pré-compactados. A lista de verificação de compactação de ativos estáticos do S3 abrange política de bucket, upload de arquivo pré-compactado com metadados de codificação de conteúdo corretos, política de cache do CloudFront, cabeçalhos Vary e comandos de verificação - cada um com AWS CLI pronto para copiar e snippets do Terraform. Todo o conteúdo é executado no seu navegador - não é necessária inscrição.
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
Por que usar nossa lista de verificação de compactação de ativos estáticos S3?
- Configuração completa da compactação do S3 em um só lugar: a lista de verificação de compactação de ativos estáticos do S3 abrange todas as etapas (política de bucket, upload de arquivo pré-compactado, configuração do CloudFront, cabeçalhos Vary e comandos de verificação) para que você não perca uma etapa crítica que interrompa a compactação.
- Lista de verificação de compactação segura do S3 on-line: todo o conteúdo da lista de verificação é gerado inteiramente em seu navegador. Nenhuma credencial AWS, nome de bucket ou nome de domínio é enviado para qualquer servidor - seguro para planejar configurações de produção de compactação S3 e CloudFront.
- Snippets de configuração para cada etapa: cada item da lista de verificação inclui um snippet de configuração pronto para copiar – comandos da AWS CLI, recursos do Terraform, políticas de bucket e comandos de verificação curl – para que você possa implementar cada etapa imediatamente.
- 100% gratuito para sempre: a lista de verificação de compactação de ativos estáticos S3 é totalmente gratuita, sem inscrição, sem nível premium, sem limites e sem anúncios. Use-o quantas vezes precisar, para sempre.
Por que a compactação S3 requer pré-compactação
Ao contrário do Nginx ou do Apache, o Amazon S3 não compacta respostas dinamicamente. S3 é um serviço de armazenamento de objetos - ele fornece arquivos exatamente como foram carregados. Para servir ativos compactados do S3, você deve pré-compactar seus arquivos no momento da compilação e fazer upload das versões original e compactada com os metadados de codificação de conteúdo corretos. Nossa lista de verificação de compactação de ativos estáticos S3 orienta você em todas as etapas desse processo, desde a configuração do bucket até a configuração e verificação da política de cache do CloudFront.
Como funciona a lista de verificação de compactação S3
- Trabalhe em cada categoria: a lista de verificação é organizada em cinco categorias: configuração do bucket S3, upload de arquivos pré-compactados, configuração do CloudFront, cabeçalhos de resposta e verificação. Clique em cada item para expandir trechos de configuração e avisos.
- Marque as etapas concluídas: clique no ícone de círculo ao lado de cada item para marcá-lo como concluído. A barra de progresso acompanha sua conclusão geral em todos os itens da lista de verificação.
- Copiar e implantar: cada item inclui um comando AWS CLI pronto para copiar, recurso Terraform ou comando de verificação curl - clique em Copiar para usá-lo imediatamente em seu terminal ou pipeline.
O que a lista de verificação cobre
- Configuração de bucket S3: política de bucket para leitura pública ou CloudFront OAC, hospedagem de site estático e configuração CORS para fontes de origem cruzada e ativos de API.
- Upload de arquivo pré-compactado: como fazer upload de arquivos.gz e.br com metadados corretos de codificação de conteúdo, tipo de conteúdo e controle de cache usando a AWS CLI.
- Configuração do CloudFront: configuração de distribuição, compactação automática, política de cache com Accept-Encoding na chave de cache e aplicação de HTTPS.
- Verificação: comandos curl para confirmar que GZIP e Brotli estão funcionando, verificações da taxa de acertos do cache e medição do tamanho da transferência.
S3 + CloudFront vs compactação instantânea
A pré-compactação + S3 é mais eficiente do que a compactação instantânea para ativos estáticos - o custo da CPU de compactação é pago uma vez no momento da construção, não em todas as solicitações. O CloudFront também pode compactar respostas dinamicamente para objetos que ainda não foram compactados (objetos ≥1.000 bytes), mas a pré-compactação fornece níveis máximos de compactação (nível 9 de GZIP, qualidade Brotli 11) que a compactação dinâmica do CloudFront não usa. Para obter o melhor desempenho, pré-compacte seus ativos e carregue-os no S3 com metadados corretos. O CloudFront passará pelo cabeçalho Content-Encoding de forma transparente.
Perguntas frequentes
A lista de verificação de compactação de ativos estáticos S3 é um guia passo a passo para configurar o AWS S3 e o CloudFront para servir corretamente ativos estáticos GZIP e Brotli pré-compactados. Abrange política de bucket, upload de arquivo pré-compactado com metadados corretos, política de cache do CloudFront, cabeçalhos Vary e comandos de verificação.
Não. O Amazon S3 é um serviço de armazenamento de objetos – ele fornece arquivos exatamente como foram carregados. Para servir ativos compactados do S3, você deve pré-compactar seus arquivos no momento da compilação e carregá-los com os metadados de codificação de conteúdo corretos. O CloudFront pode compactar respostas dinamicamente para objetos não compactados, mas a pré-compactação oferece melhores taxas de compactação.
Sim. A lista de verificação de compactação de ativos estáticos S3 é 100% gratuita, sem inscrição, sem assinatura, sem limites e sem anúncios. Todo o conteúdo da lista de verificação é gerado em seu navegador – nenhuma credencial AWS ou dados de configuração são enviados para qualquer servidor.
Carregue o arquivo compactado usando o nome do arquivo original (por exemplo, app.js, não app.js.gz) e defina Content-Encoding: gzip e Content-Type: application/javascript. Isso diz aos navegadores para descompactar a resposta de forma transparente. Se você fizer upload como app.js.gz sem codificação de conteúdo, os navegadores farão o download como um arquivo binário.
Habilite "Compactar objetos automaticamente" nas configurações de comportamento do CloudFront e crie uma política de cache com EnableAcceptEncodingBrotli: true. O CloudFront servirá Brotli para clientes que enviarem Accept-Encoding: br. Nota: Brotli só é negociado por HTTPS.
Sem Accept-Encoding na chave de cache, o CloudFront armazena em cache apenas uma versão de cada objeto. Se uma resposta compactada for armazenada em cache e servida a um cliente que não oferece suporte a GZIP, o navegador receberá conteúdo corrompido. A inclusão de Accept-Encoding na chave de cache garante que o CloudFront armazene em cache versões separadas para cada codificação.
A compactação dinâmica do CloudFront usa GZIP nível 6 e compacta apenas objetos ≥1.000 bytes. A pré-compactação usa níveis máximos (GZIP nível 9, qualidade Brotli 11) e carrega arquivos compactados para S3. A pré-compactação é mais eficiente para ativos estáticos, pois o custo da CPU é pago uma vez no momento da construção.
Execute: `curl -H "Accept-Encoding: gzip" -I https://YOUR-CLOUDFRONT-DOMAIN/app.js` e procure por `Content-Encoding: gzip`. Para Brotli: `curl -H "Accept-Encoding: br" -I https://YOUR-CLOUDFRONT-DOMAIN/app.js` e procure por `Content-Encoding: br`.
Use o endpoint REST S3 com CloudFront Origin Access Control (OAC). O endpoint do site S3 não oferece suporte a OAC, requer acesso público ao bucket e não oferece suporte a HTTPS do CloudFront para S3. O endpoint REST com OAC é mais seguro e oferece suporte a todos os recursos do CloudFront.