Learn
What Is H.264 (AVC)? The Codec Behind Most Online Video
H.264, also called Advanced Video Coding (AVC) or MPEG-4 Part 10, is a block-based video compression standard published ...
The Vercel CDN puts edge points of presence (PoPs) in front of 20 compute regions, as listed in Vercel documentation in 2025. The PoPs terminate TLS and route traffic. The regions hold cached responses, Incremental Static Regeneration (ISR) pages and functions. Static assets stay cached until the next deployment, ISR pages are served from cache and regenerated in the background, and dynamic server-side rendered (SSR) responses are not cached unless they carry an s-maxage directive.
Bandwidth above the plan allowance is billed per GB, starting near $0.15 per GB on Vercel's 2025 list prices, and that line is where most surprise invoices originate. This guide covers the request path, the dated region list, cache behavior per rendering mode, edge versus Node.js functions, bandwidth math at 20 TB and 100 TB, a failure-mode table, and a decision matrix for when a second CDN belongs beside Vercel.
Vercel's documentation now files what used to be called the Edge Network under the CDN name. The machinery is unchanged: anycast addressing pulls each client to a nearby PoP, and the PoP terminates TLS. The request then crosses Vercel's private backbone to the nearest compute region, where routing middleware runs, the cache is checked and, on a miss, a function or static storage answers.
That makes three practical tiers: PoP, regional cache, and origin (function or build output). Regional caching absorbs most misses. Vercel also collapses concurrent requests for the same uncached ISR path within a region, so a cold page does not fan out into dozens of identical function invocations.
You can read the path on any response. The x-vercel-id header lists the PoP region code first and, for function-served responses, the region that executed the function. When you see a code like fra1 followed by iad1, a request entered in Frankfurt and was computed in Washington, D.C.
| Area | Region codes and cities |
|---|---|
| North America | iad1 Washington, D.C. (default function region); cle1 Cleveland; sfo1 San Francisco; pdx1 Portland; yul1 Montreal |
| Europe | dub1 Dublin; lhr1 London; cdg1 Paris; fra1 Frankfurt; arn1 Stockholm |
| Asia-Pacific | bom1 Mumbai; sin1 Singapore; hkg1 Hong Kong; hnd1 Tokyo; kix1 Osaka; icn1 Seoul; syd1 Sydney |
| South America, Africa, Middle East | gru1 São Paulo; cpt1 Cape Town; dxb1 Dubai |
Functions run in iad1 unless you pin them elsewhere, so a European database paired with default settings adds a transatlantic round trip to every uncached SSR request.
Vercel adds regions over time, so confirm the current list in its documentation before pinning anything.
Vercel CDN caching depends on the rendering mode. Build output is cached automatically and scoped to the deployment. ISR pages are cached and refreshed by time or on demand. SSR and API responses are cached only when the response explicitly allows it through Cache-Control, CDN-Cache-Control or Vercel-CDN-Cache-Control. The last of these applies to Vercel's cache alone and is stripped before the browser sees it.
Hashed JavaScript, CSS and font files carry immutable caching and survive indefinitely within a deployment. Plain HTML from the build output is cached at the edge as well. A new deployment gets a fresh cache namespace, so every deploy starts cold for HTML, and that matters once you ship many times a day.
Time-based ISR serves the cached page and regenerates an expired copy in the background, so the first visitor after expiry gets STALE and the next one gets the new page. On-demand revalidation through revalidatePath or revalidateTag purges by path or tag. It suits CMS webhooks and database triggers.
Vercel describes global purge completion in well under a second. Treat that as a vendor claim and measure it. Distant regions under load can lag, so applications that need read-after-write consistency should not rely on the cache for that guarantee.
The pattern that holds up uses a long revalidate interval, 3600 seconds or more, as a safety ceiling, with tags driving freshness. Short intervals generate function invocations and origin transfer you pay for, and they race with event-driven purges.
Dynamic routes return private, no-store caching by default and show MISS on every request. To cache them, send a directive such as public, s-maxage=60, stale-while-revalidate=300. Use that only where brief staleness is acceptable and the response does not vary per user.
Watch the cache key. Each distinct query string is a separate entry, so tracking parameters fragment the cache. Strip analytics parameters and cookies before they reach cacheable routes.
Routing middleware runs before the cache lookup, so its latency lands on every matched request, including cache hits. Limit it to edge-local work: geo-routing, header rewrites and deterministic cookie checks. Move authentication lookups and feature-flag fetches into cached functions. Use a matcher that excludes static paths. In Next.js 16 the middleware file was renamed proxy, and the behavior is the same.
| Dimension | Edge runtime | Node.js runtime (Fluid compute) |
|---|---|---|
| Execution model | V8 isolates, Web APIs, partial Node API support | Full Node.js, concurrent requests per instance |
| Code size (2025 docs) | 1 to 4 MB compressed, by plan | Much larger bundles allowed |
| Duration | First byte within 25 s, streaming up to 300 s | Up to 300 s on Hobby, 800 s on Pro (2025) |
| Best fit | Rewrites, redirects, lightweight personalization | Database access, SDKs, anything near your data |
Vercel's own guidance since 2025 favors the Node.js runtime for most functions, because running next to your database beats running next to the user when every request makes a data call.
On Vercel's 2025 list prices, the Pro plan includes 1 TB of Fast Data Transfer. Beyond that, the price starts near $0.15 per GB in the cheapest regions and is higher in regions such as São Paulo or Mumbai. Edge requests above the included quota cost about $2 per million, and Fast Origin Transfer adds a smaller per-GB charge on cache misses. All of these are approximate, so check the current price page.
Here is the arithmetic for a site whose weight is mostly images, video or downloads, at the lowest regional rate, on transfer alone (our estimate, list prices):
Request fees barely move this number: 100 TB of 5 MB objects is 20 million requests, about $20 above the quota. Enterprise contracts negotiate transfer, so the gap narrows there. The structure stays the same, though: framework-aware hosting priced per GB, applied to bulk bytes.
| What breaks | How it shows up | How to confirm |
|---|---|---|
| Cold cache after deploy | Function invocations and p95 latency spike for minutes after each release | x-vercel-cache shows MISS or PRERENDER on hot routes right after a deploy |
| Cache-key fragmentation | Hit ratio stalls below target despite long TTLs | Same path logs many MISSes with differing query strings or cookies |
| Silent revalidation failure | Editors publish, users keep seeing old content | STALE persists past the interval; webhook route logs show errors or tag mismatches |
| Middleware on the hot path | Time to first byte (TTFB) on cache hits well above the static baseline | Compare TTFB for an asset inside and outside the matcher |
| Function far from data | SSR p95 high in one geography only | x-vercel-id pairs a nearby PoP with a distant function region |
| Bandwidth runaway | Invoice jumps with no traffic-pattern change in HTML | Usage dashboard shows transfer dominated by media or download paths |
Most of these failures are visible in two response headers, x-vercel-cache and x-vercel-id, before any paid observability tooling is involved.
For cold-start stampedes after deploys, enable skew protection, roll out gradually and pre-warm critical routes. Keep a time-based ISR fallback so a broken webhook degrades to minutes of staleness instead of days.
| Workload on Vercel | Recommendation |
|---|---|
| HTML, ISR, APIs, under about 1 TB a month | Stay on Vercel only; the included allowance covers it |
| Framework pages plus heavy images | Use Vercel Image Optimization with AVIF first, then offload originals if transfer still dominates |
| Video, installers, game builds, archives at 10 TB or more | Serve them from a volume-priced CDN on a media subdomain; keep HTML on Vercel |
| Need for WAF, bot management, WebSockets | Keep Vercel's firewall or a security vendor in front; a delivery-only CDN does not replace it |
The split that pays off is by byte type: framework-aware responses stay on Vercel, and bulk static files move to a subdomain priced per TB.
As of October 2026, BlazingCDN prices delivery from $5 per TB down to $2.50 per TB at volume on progressive tiers, with one rate for US, Europe and Asia and no request fees. The 100 TB month from the model above costs $415 on BlazingCDN, against the roughly $14,850 list estimate on Vercel transfer. Current rates are on the BlazingCDN CDN pricing page.
The honest limits: BlazingCDN does not support HTTP/3 or WebSockets, runs no edge functions, and sells no WAF. It belongs beside Vercel for media and downloads, not in place of it.
Not by default. Dynamic SSR responses on the Vercel CDN return private, no-store caching and show MISS on every request. To cache them, send s-maxage through Cache-Control, CDN-Cache-Control or Vercel-CDN-Cache-Control, optionally with stale-while-revalidate. Do this only for responses that do not vary per user, because cookies and query strings change what is safe to share.
Yes. Vercel's documentation now files the former Edge Network under the CDN name, and the infrastructure is the same: PoPs that terminate TLS, a private backbone, and compute regions holding cache and functions. Older posts saying Edge Network describe this system. Check the x-vercel-id header to see which PoP and region served a given request.
Use Node.js functions for most work and reserve the Vercel edge runtime for lightweight routing. Since 2025, Vercel's guidance favors Node.js with Fluid compute, because functions that query a database run faster in the database's region than at a PoP near the user. Edge runtime keeps strict code-size limits and partial Node API support.
Vercel describes on-demand purges through revalidatePath and revalidateTag as completing globally in well under a second. Treat that figure as a vendor claim. Distant regions under heavy load can lag, so measure it from several locations. Applications needing strict read-after-write consistency should bypass the cache for that data instead of relying on purge timing.
Roughly $1,350 in transfer on 2025 list prices, using the cheapest regional rate. The Pro plan includes 1 TB, and the remaining 9,000 GB at about $0.15 per GB produces that figure. Regions such as São Paulo or Mumbai cost more per GB, request fees add a little, and Enterprise contracts negotiate transfer separately.
This week, export one month of Vercel usage and split Fast Data Transfer by path prefix: HTML and API routes on one side, images, video and downloads on the other. Multiply the media share by your actual regional per-GB rate and compare it with a per-TB alternative. Then check x-vercel-cache hit ratios on your top 20 routes. That one export tells you whether your problem is cache configuration or byte economics, and the fix differs for each.
If the media share dominates, the BlazingCDN cost calculator for offloaded media traffic prices the same volume on progressive tiers from $5 per TB, with no request fees.
Heavy traffic.
Light bill.
The CDN for video and large traffic
Learn
H.264, also called Advanced Video Coding (AVC) or MPEG-4 Part 10, is a block-based video compression standard published ...
Compare
At 100 TB a month, the published price gap between options for a CDN for static content is more than 16 times: ...