URLPulse All articles
Site Performance

We Spent $5 on Hosting and Added a CDN: Measuring Where Every TTFB Millisecond Went

URLPulse
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:

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

All Articles

Related Articles

The Origin Server Isn't the Whole Story: Reading Uptime Reports Your Visitors Never Experience

The Origin Server Isn't the Whole Story: Reading Uptime Reports Your Visitors Never Experience

INP Is on Borrowed Time: Building Performance Dashboards That Outlive Google's Metric Shuffle

INP Is on Borrowed Time: Building Performance Dashboards That Outlive Google's Metric Shuffle

Every Hop Costs You: Quantifying the Performance Tax of Layered 301 Redirects

Every Hop Costs You: Quantifying the Performance Tax of Layered 301 Redirects