We Spent $5 on Hosting and Added a CDN: Measuring Where Every TTFB Millisecond Went
Photo: National Aeronautics and Space Administration. Lyndon B. Johnson Space Center. 2/17/1973, Public domain, via Wikimedia Commons
There's a persistent belief in web performance circles that cheap hosting is a death sentence for time-to-first-byte. It's half true. Cheap hosting is a handicap, not a verdict — and the gap between a $5 shared plan and a respectable TTFB can be closed substantially with two tools that cost almost nothing: a CDN and intelligent caching.
We ran the experiment. Same page, same content, four configurations, measured from three US regions. Here's where the milliseconds actually went.
The Test Setup
We built a single WordPress page — a realistic article layout with an image, standard plugins, and no exotic optimization — and deployed it identically across two environments: a $5/month shared hosting plan and the same plan fronted by a free-tier CDN with page caching enabled. We tested a third variant with CDN but caching disabled, to isolate what each layer contributed.
Measurements came from synthetic checks run every 15 minutes for a week, from test nodes in Virginia, Oregon, and Texas, capturing both TTFB and full page load. Median values, not averages — shared hosting has ugly tails.
The Numbers
Baseline, shared hosting alone: median TTFB of 780ms from Virginia (close to the host's data center), 1,100ms from Oregon. The server needed 600–900ms to generate each page because every request triggered a full PHP bootstrap and multiple database queries. Distance added the rest.
CDN, caching off: marginal improvement. Median TTFB dropped roughly 15–20% because the CDN terminated TLS closer to the visitor and maintained a warm connection to the origin, but every request still hit the origin for a full page render. The bottleneck — the 700ms of server-side processing — was untouched.
CDN with page caching: the decisive result. Median TTFB fell to 85ms from Virginia and 120ms from Oregon — a near-90% reduction from baseline. Once the CDN cached the HTML, the origin server was out of the request path entirely for cache hits. Cache hit ratio stabilized above 95% on this mostly-static article page.
Where the Milliseconds Go
The breakdown tells the story:
- Server-side rendering (PHP + database): 600–900ms per uncached request. This is the single largest cost on cheap hosting, and no CDN can eliminate it — only caching can.
- Network distance: 150–300ms coast-to-coast without an edge network. This is what the CDN removes.
- TLS handshake overhead: 50–100ms, reduced when the CDN terminates encryption near the visitor.
- Origin connection setup: the recurring tax of opening a new connection to a slow origin, largely erased by warm CDN-to-origin connections and, more importantly, by cache hits that never touch the origin at all.
The lesson is sequencing. The CDN alone fixed geography. Caching fixed computation. You need both, and caching is the one that matters more on budget hosting.
The Budget Playbook
For a small site owner — a local business, a niche blog, a portfolio — the playbook costs under $10 a month beyond hosting:
- Put a CDN in front of everything. Any of the major free-tier CDNs works. Point DNS at the CDN, let it proxy to origin.
- Cache HTML aggressively, and purge on publish. Full-page caching is where the wins live. Most CDN providers offer it; most WordPress caching plugins offer an origin-side equivalent that pairs well.
- Set sane cache headers. Long TTLs for content that rarely changes, with a purge hook on updates. Stale content is a content problem, not a performance problem.
- Bypass cache for genuinely dynamic paths — cart, checkout, logged-in views — and accept the origin's speed there, or move those flows to a better host.
- Measure from your audience's geography. A site with mostly Midwest and East Coast traffic should be judged on those medians, not on a global average that hides the regional story.
What This Doesn't Fix
Be honest about the ceiling. Dynamic, personalized, or database-heavy pages can't be fully cached, and on $5 hosting they will stay slow. Spiky traffic will still strain a shared origin on cache misses. And a CDN adds a failure mode: if the edge has an outage, your site goes down with it, so monitor through the CDN and from origin directly — a practice worth an entire article on its own.
But for the majority of small content sites, the gap between "cheap hosting" and "fast enough" isn't a $50-a-month upgrade. It's a caching layer, a purge button, and an afternoon of configuration. The milliseconds were never gone — they were just waiting to be cached.