Edge-fast by default
Cached at 600+ CloudFront locations, so the first byte comes from a city near the visitor — not a single region.
No origin server. No runtime. No request-time build. Everything you're reading was uploaded as static files to an Amazon S3 bucket, then handed straight to your browser over HTTPS from the nearest edge. And yes — the JavaScript still runs.
The request lifecycle
A static site skips the application tier entirely. The bytes you're reading travelled a fixed, cacheable path — which is exactly why it's fast, cheap, and hard to knock over.
Resolves DNS and asks for the page over TLS.
The nearest edge serves a cached copy — or fetches once from origin.
The origin: a bucket with website hosting on and a read-only access policy.
One object, Content-Type text/html, streamed back byte-for-byte.
Why static, why S3
Fewer moving parts is a feature. Here's what you inherit for free when the site is just objects.
Cached at 600+ CloudFront locations, so the first byte comes from a city near the visitor — not a single region.
A free ACM certificate on CloudFront terminates TLS 1.3 at the edge. No cert-renewal cron jobs, ever.
Every object is redundantly stored across multiple facilities. You lose sleep over deploys, not disks.
No app server, no database, no interpreter at request time. The attack surface is a read-only file listing.
Push new files with one aws s3 sync, invalidate the cache, and you're live. Roll back by re-syncing.
A launch, a front-page link, a bot storm — S3 absorbs it without an autoscaling group in sight.
Ship it
This exact page went live the same way. Build your static files, sync them to the bucket, and let CloudFront invalidate the old copy.
$ aws s3 sync ./dist s3://objectly-demo-site \ --delete --cache-control "max-age=31536000" upload: dist/index.html → s3://objectly-demo-site/index.html ✓ 1 file uploaded · 0 removed $ aws cloudfront create-invalidation \ --distribution-id E1XY2Z --paths "/*" ✓ invalidation IXN…7QA created
aws s3 sync ./dist s3://objectly-demo-site --delete --cache-control "max-age=31536000"
Your turn
Everything here is one HTML file. Copy the deploy command, drop your own files in a bucket, and you'll be serving from the edge in minutes.