For sub-100k pageviews/mo SMB sites, Cloudflare Pages + Workers is default; flip only when Postgres connection pooling or existing Vercel contract
Created 2026-05-22
Latency math for a KW SMB serving primarily Ontario traffic:
- Cloudflare PoP in Toronto → user: 5-15ms
- Vercel iad1 (Virginia) → Ontario user: 25-40ms
- Single origin in Toronto VPS → Ontario user: 5-15ms
- Single origin in Toronto → user in BC or NY: 60-100ms
For 95%-local-traffic, pure latency case for edge is weak. The case for Cloudflare is:
- Global CDN for static assets (every option provides this).
- Sub-5ms V8 isolate cold starts for SSR/dynamic logic vs container-based serverless at 250ms+.
- Predictable pricing model that beats Vercel by ~5-10× at SMB volumes.
- Free tier that genuinely covers SMB volumes.
- DNS + CDN + edge compute + image optimization in one console.
When to flip to Vercel: the client requires it (existing relationship, agency contract); the project is a Next.js app needing zero-config ISR/Image/PPR; the team has Vercel-specific tooling expertise.
When to flip to a Toronto VPS: the project needs PostgreSQL with real connection pooling (not HTTP-driver only). Alternative: Neon/Supabase serverless Postgres with Cloudflare as the front door.