Six months ago I started moving my 46-site digital empire off VPS hosting and onto Cloudflare Workers + Pages. Here’s where the numbers landed and what I’d do differently.
Where I started
- 46 sites on 3 VPS instances (Hostinger, $32/mo total)
- Average TTFB: 320ms from India, 590ms from US-east
- Maintenance cost: ~2 hrs/week (updates, backups, cert renewals)
The migration playbook
I moved sites in three waves, easiest first:
- Static-content sites (29 sites) — Astro on Cloudflare Pages. Two days each. Zero ongoing maintenance.
- WordPress front-ends with headless backends (12 sites) — moved the front-end to Astro + Cloudflare, kept WP only as a content source via REST API.
- WordPress full-stack (5 sites) — these still run on VPS for the wp-admin. But the public side is cached aggressively at Cloudflare’s edge with Cache Reserve.
The numbers — month 6
| Metric | Before | After |
|---|---|---|
| Monthly hosting | $32 | $7 |
| Avg TTFB (India) | 320ms | 84ms |
| Avg TTFB (US-east) | 590ms | 110ms |
| Maintenance / week | 2 hrs | < 20 min |
What I’d skip if starting over
I spent two weekends trying to make D1 the database for everything. It’s not the right tool for sites with a lot of mutable user content yet. Stick with Postgres-on-managed-service for sites that need writes; D1 is great for read-heavy lookup tables (deals, ratings, configs).
Next steps
Wave 4 of the migration is moving the WP-admin surfaces to a hosted WP managed service so my last VPS goes away entirely. Targeting end of Q3.