The Cloudflare cache warmer that reaches every colo

Cloudflare caches per data center — 300+ of them. A page cached in Frankfurt is still ice cold in Sydney. warmup.rocks sends warming requests from 42 countries, so your cache is HIT where your visitors actually are.

The Cloudflare-specific problem

One origin, 300+ independent caches

Three things make Cloudflare caches go cold — and none of them can be fixed from a single server.

🌍

Per-colo caching

Every Cloudflare data center keeps its own cache. Organic traffic warms the colos near your existing visitors — and leaves the rest cold. In our measurement of 408,000 requests, a miss was 3.5× slower than a hit at the median.

📄

HTML is DYNAMIC by default

Cloudflare doesn't cache HTML unless you tell it to — that's the DYNAMIC status you see in the headers. A Cache Rule fixes eligibility; warming fixes the part no rule can: getting the object into each colo.

🗑️

Eviction outpaces TTLs

Edge caches are best-effort storage under cache pressure. Our data shows some colos evicting up to 9.4% of warmed objects between hourly passes while others hold everything — re-warming on a schedule is the only reliable counter.

How it works with Cloudflare

Built around cf-cache-status

1

Add your sitemap, verify your domain

No plugin, no Worker, no DNS change. If your pages are publicly reachable, you're ready — sitemap indexes are resolved automatically before every run.

2

We warm from 42 countries

Each request enters Cloudflare's anycast network in a different region and fills the colo it lands in — 90+ edge locations per pass. With Tiered Cache enabled, upper-tier colos get filled too, so even locations we never touch skip your origin.

3

Every response is verified

We record cf-cache-status and the colo for every URL on every run. You see HIT ratios per data center — and cold spots (a purge, a misconfigured TTL, a WAF rule blocking the warmer) the moment they appear.

FAQ

Cloudflare specifics

Does it work with Bot Fight Mode or Super Bot Fight Mode?

Yes, with one setup step: allowlist our documented user agent WarmupRocks or configure a secret warm header (Project → Advanced setup). Our WAF guide has copy-paste rules; if a run gets blocked anyway, we alert you by email instead of failing silently.

My HTML shows DYNAMIC — can you still warm it?

Not until it's cacheable: DYNAMIC means Cloudflare won't store the response at all. Create a Cache Rule ("Eligible for cache" for your URLs) or send Cloudflare-CDN-Cache-Control from the origin, then warming turns those MISSes into HITs. Our cf-cache-status guide walks through every status.

Does this replace Cloudflare's Cache Reserve or Tiered Cache?

No — they solve different layers and combine well. Tiered Cache reduces origin fetches between colos, Cache Reserve persists objects in R2. Neither puts your pages into the 300+ edge colos before a visitor arrives; that's what warming does.

How many Cloudflare colos do you actually reach?

A typical pass fills 39+ Cloudflare colos directly (measured live, shown on our homepage map) and more via tiered caching. We publish the full Cloudflare data center list and report which colo served every single request.

See your per-colo hit ratio today

Free for 7 days, plans from $15/month. Cancel anytime.

Start free trial Read the deep dive