Skip to content

Research: Workers Cache savings estimate (2026-07-07)

Date: 2026-07-07 · HTMA calibrated measurement brief. No code changed.

Adopting Cloudflare’s new Workers Cache on the thumbnail worker saves an estimated ~$1–$12/month (central ~$5/mo) in the realistic scoped, post-Snippet-URL-encoding case, with a hard ceiling near ~$13/mo. Near-term (fixed-variant surfaces only) it’s <$2/mo. Enabled naively/globally it increases cost by $5–$15+/mo (it converts page-rule-served “free” hits into billed requests) and re-creates the referrer-blind variant lottery. This is not a cost play — adopt Workers Cache for request-collapsing/latency/resilience, not to save money.

  • Decision: adopt Workers Cache for cost savings, and if so how (scoped vs global, before vs after the Snippet encodes the variant in the URL)?
  • Quantity: net recurring Cloudflare spend change (positive = savings). Unit: USD/mo.
  • Horizon: steady-state monthly at current traffic.
  • Threshold: repo rule flags any change ≥ ±$1/mo (this memo satisfies it); the “worth-doing-alone” bar is ~$10/mo.

A Workers-Cache hit skips the worker, which removes the worker’s KV read ($0.50/1M) and any worker-side R2 read — but the request line still bills ($0.30/1M) and CPU is already free (worker averages 0.58 ms/req ⇒ ~17M CPU-ms/mo, under the 30M free tier). So the only real saving is eliminated KV reads, capped by the whole KV bill.

Confirmed anchors (rates are Cloudflare public pricing; the blended model matches the cost-safe cache-purging runbook):

  • Worker-path blended ~$1.07/1M = ~$0.504/1M request + 1.13 × ~$0.50/1M KV.
  • R2 Class B GET ~$0.36/1M.
  • Current KV read bill ~$12.28/mo (~34.6M reads/mo after 10M free).
  • Derived: worker runs ~30M×/mo (34.6M KV ÷ 1.13). CPU ≈ $0 (under free tier).

Decomposition — realistic scoped saving (post-URL-variant, ~40–70% capture)

Section titled “Decomposition — realistic scoped saving (post-URL-variant, ~40–70% capture)”
ComponentLowCentralHighBasis
Eliminated KV reads$2$5$930M inv × 1.13 KV × $0.50/1M × capture%
Eliminated worker R2 Layer-2 reads$0.5$1.5$3subset of R2 GET × $0.36/1M
Eliminated CPU$0$0$0.5already under free tier
Request-line change (scoped)$0$0$0hits still bill the request
Net (scoped, post-URL-variant)~$2.5~$6~$12sum
  • Ceiling (100% capture, unrealistic): ~$13–15/mo.
  • Near-term (fixed-variant surfaces only): ~$0.3–$2/mo (central ~$1) — those surfaces are already cheap.
  • Downside (naive/global enable): converting even 20% of ~150M/mo page-rule-served requests to billed requests ≈ +$9/mo; range −$5 to −$15+/mo.

90% CI for the realistic scoped saving is $1–$12/mo, central ~$5. The swing is dominated by an unmeasured capture share, not by the (known) unit rates. >90% confident the saving is < ~$13/mo (structural ceiling) and > $0 only if scoped correctly — a naive enable can be negative.

  1. Capture share + page-rule billing interaction (biggest swing) → resolve with a 1-week Workers Cache pilot on a fixed-variant surface, tracking Cf-Cache-Status hit rate and the KV-read / invocation / billed-request deltas. This settles the whole question.
  2. Actual worker-invocation metric (tightens the ~30M/mo derivation ±30%).
  3. Skip external pricing lookups — the rates are known and not the bottleneck (VoI ≈ 0).

Stop rule: if the pilot shows a scoped saving under ~$3/mo (likely), the cost case is settled — adopt for non-cost reasons or not at all.

Do not adopt Workers Cache to save money. Central ~$5/mo (CI $1–$12) is below the ~$10/mo worth-it-alone bar, CPU savings are ~$0, and a naive global enable can raise the bill while breaking deterministic delivery. Instead:

  1. For the cheap KV win now: ship the already-planned entitlement cacheTtl 60→300s tuning — same headroom, no new feature.
  2. Adopt Workers Cache after the Snippet encodes the variant in the URL, for request-collapsing/latency/resilience; take the ~$5/mo as a byproduct.
  3. Confirm sign and size with the 1-week fixed-variant pilot before any enable.
{
"quantity": "recurring monthly Cloudflare cost saving from adopting Workers Cache (scoped, post-URL-variant)",
"unit": "USD/month",
"low_90": 1,
"central": 5,
"high_90": 12,
"confidence": "90%",
"decision_threshold": 10,
"threshold_implication": "Below the ~$10/mo worth-it-alone bar (ceiling ~$13/mo); naive global enable is negative. Not a cost play — adopt post-URL-variant for collapsing/latency; ship cacheTtl 60->300s for the cheap KV win.",
"top_uncertainty_driver": "capture share of worker invocations converted to Workers-Cache hits, plus whether enabling converts page-rule-served free hits into billed requests",
"estimate_status": "estimated",
"next_measurement_step": "1-week Workers Cache pilot on a fixed-variant surface measuring Cf-Cache-Status hit rate and KV-read / invocation / billed-request deltas"
}