Answer from the nearest edge
When the edge already has a fresh object for this URL and deployment, visitors get the response locally. Compute does not run.
Preview and production hosts get managed TLS, framework-aware caching, and tag revalidation automatically. No separate CDN product. Compute stays in named regions when the cache cannot answer.
41 edge locations
Traffic routes to the nearest edge for TLS, caching, and protection
Cached at the edge
Eligible GET and HEAD responses answer without running compute
On every deployment
Preview and production hosts use the same edge path automatically
41 edge locations handle TLS, routing, caching, and protection. Dynamic work continues in named compute regions when the cache cannot answer.
41
regionsAshburnAtlantaBostonChicagoDallasDenverLos AngelesMiamiNew York CitySan JoseSeattleToronto
AmsterdamAthensBucharestCopenhagenFrankfurtLondonMadridMilanParisPragueStockholmViennaWarsawZagreb
BangkokHong KongIstanbulJakartaKuala LumpurManilaSingaporeTel AvivTokyo
BogotaMexico CitySao Paulo
Sydney
JohannesburgLagos
The edge decides first. Cache hits stay local. Misses reach compute and can refill the cache for the next request.
When the edge already has a fresh object for this URL and deployment, visitors get the response locally. Compute does not run.
When the edge has nothing usable, the request continues to a named compute region. Eligible responses populate the edge for the next visitor.
CDN cache is for complete HTTP responses that many visitors can share: pages, assets, and public API payloads with a known lifetime.
Prerendered pages and static assets stay at the edge so every visitor gets a nearby copy.
Cache product and listing responses, then expire them by tag when inventory or pricing changes.
Public JSON that changes on a known schedule uses CDN lifetime headers without a separate CDN config ritual.
Frameworks that emit standard Cache-Control and CDN-Cache-Control headers get this behavior without a separate CDN product. For Next.js specifics, see Next.js on Easel.
When a product, post, or listing changes, expire the tagged edge objects so the next visitor gets a new response. One call can update CDN objects, Runtime Cache entries, and ISR pages that share the tag.
"use server";
import { revalidateTag } from "next/cache";
export async function publishProduct(id: string) {
await saveProduct(id);
revalidateTag(`product-${id}`);
revalidateTag("products");
}Ready to see this on a preview URL?
Book a call and ship a branch. The CDN is already on.
HIT, MISS, STALE, BYPASS, and REVALIDATED are readable on the response. Caching follows documented headers and framework APIs, not a black box.
The edge already had a fresh object for this URL and deployment.
Response headers
cache-control: public, s-maxage=300, stale-while-revalidate=60 age: 42 x-cache: HIT x-vercel-cache: HIT cache-tag: product:123, collection:featured
You do not buy or enable a separate CDN. Domains, certificates, and compression ride the same edge path as platform hosts.
Every preview URL, production host, and custom domain is fronted by Easel CDN automatically.
Certificates issue and renew at the edge for platform hosts and verified custom domains.
Eligible HTML, CSS, JS, and other text responses compress with Brotli or gzip based on Accept-Encoding.
Book a call, deploy a branch, and serve from the edge on the first preview URL.