Gzip Compression in CDN Configuration
Learn how to configure gzip and Brotli compression in popular CDNs: Cloudflare, AWS CloudFront, Vercel, Fastly, and Netlify.
Infrastructure
Detailed Explanation
CDN Compression Configuration
Content Delivery Networks (CDNs) can compress content at the edge, closer to users. Each CDN handles compression differently.
Cloudflare
Cloudflare automatically compresses text-based assets:
- Gzip: Enabled by default for all text content types
- Brotli: Toggle in Dashboard > Speed > Optimization
- Compression level: Not user-configurable (Cloudflare optimizes internally)
- Pre-compressed support: Cloudflare re-compresses regardless
AWS CloudFront
CloudFront supports compression but requires explicit configuration:
{
"CacheBehavior": {
"Compress": true,
"ViewerProtocolPolicy": "redirect-to-https"
}
}
- Compresses objects between 1,000 and 10,000,000 bytes
- Supports gzip and Brotli (automatic negotiation)
- Origin must NOT set Content-Encoding (CloudFront compresses at edge)
Vercel
Vercel enables compression automatically:
- Brotli: Default for all text assets over HTTPS
- Gzip: Fallback for non-Brotli clients
- No configuration needed — it’s always on
- Static assets are pre-compressed at build time
Fastly
Fastly provides granular control via VCL:
sub vcl_fetch {
if (beresp.http.Content-Type ~ "text|javascript|json|xml|svg") {
set beresp.gzip = true;
}
}
Key CDN Considerations
- Vary header: CDNs cache different versions based on
Accept-Encoding - Origin compression: Some CDNs skip re-compression if origin sends compressed content
- Cache hit ratio: Separate cache entries for gzip/brotli/uncompressed can reduce hit rates
- Edge compression cost: CDN edge compression adds slight latency but saves bandwidth
Use Case
DevOps engineers and infrastructure teams configuring CDN compression. Understanding CDN-specific compression behavior prevents common pitfalls like double compression or missing Vary headers.