CDN cache correctness

Test your edge before it breaks

CDN on, origin still hammered? CacheProbe is an external, ownership-gated audit that tells you whether cache is actually working on the pages and assets that matter — and why specific paths are MISS, DYNAMIC, or BYPASS.

  • Discovers same-origin URLs, then deep-probes a budgeted sample (not a pretend full-site crawl).
  • Explains the failure mode: tracking params, Cache-Control, HTML vs assets, multi-CDN status.
  • Sequential diagnostic GETs after ownership verification — no load test, no origin flood.
https://

You prove domain ownership first (DNS TXT, meta tag, or well-known file). Free-tier audits are rate-limited with hard GET budgets.

report · example.com · sample audit
edge health78

$ cacheprobe audit example.com

discovered 24 urls · deep-sampled 12 · ownership verified

  • /pricing
    HITage 1842

    HIT confirmed · Age rising on sequential GETs

  • /blog?utm_source=x
    MISSage 0

    utm_* fragments the cache key → MISS every campaign click

  • /docs
    DYNAMICage

    HTML DYNAMIC while /assets/* HIT — origin still serves documents

  • /api/health
    BYPASSage

    Cache-Control: private · intentionally uncacheable

HIT

14

MISS

6

BYPASS

4

Illustrative sample · Edge Health deducts from 100 with evidence per finding

Normalizes cache status headers across

Cloudflare · Fastly · CloudFront · Vercel · Akamai · Netlify

The failure modes

Why “CDN enabled” still burns origin

Vendor dashboards show aggregate hit ratio. They rarely tell you which URL shapes miss, which HTML documents never cache, or that marketing parameters turned every campaign link into a unique cache key.

Tracking parameters fragment the key

utm_*, gclid, fbclid and friends create unique cache entries. Clean /pricing HITs; /pricing?utm_source=… MISSes. Campaign traffic looks like cold origin.

Assets HIT while HTML bypasses

Static CSS/JS looks healthy. Document responses stay DYNAMIC or BYPASS. Dashboards average them together and hide the expensive half.

Homepage-only checks lie

Pricing, blog, docs, checkout shell, and assets often disagree. One curl on / is not an audit of the product surface.

Aggregates without path evidence

Hit ratio is a fleet metric. Tickets need: this URL, this status, this Age, this Cache-Control — and a concrete fix.

How it works

Ownership first.
Then a real sample.

Built for platform and SRE engineers who need path-level truth. We discover broadly, deep-audit a smart sample, and report what we actually measured — coverage stated honestly.

  1. 01

    Verify ownership

    Gate

    DNS TXT, HTML meta tag, or /.well-known/cacheprobe-verification.txt. No non-trivial probe runs until control of the domain is proven.

  2. 02

    Discover same-origin URLs

    Survey

    robots.txt (honored for CacheProbe), XML sitemaps, and a shallow same-origin link crawl. Builds an inventory under hard page/asset caps — not an unbounded site mirror.

  3. 03

    Deep-probe a budgeted sample

    Audit

    Sequential GETs on selected pages and linked assets. Clean vs tracking-param variants. HIT confirmation via Age where possible. Multi-CDN status normalized into one vocabulary.

  4. 04

    Edge Health + findings

    Output

    Score starts at 100 with transparent deductions. Each finding carries URLs, status, Age, and headers. Weak samples are marked Inconclusive — never invented hit ratios.

What we check

Correctness signals, not vanity metrics

Phase 1 is cache correctness only. Capacity / stepped load is not included — when it ships later, it will be explicit and gated, not sneaked into “audit”.

URL discovery + sampling

Inventory from robots, sitemaps, and shallow crawl. Optional allowlist paths. Remaining deep slots fill from discovery under budgets.

Multi-CDN status normalization

cf-cache-status, X-Cache, x-vercel-cache, Age, and peers mapped into HIT / MISS / DYNAMIC / BYPASS language you can put in a ticket.

Query-param fragmentation

Compares clean URLs with tracking-parameter variants so campaign traffic does not silently destroy hit ratio.

HTML vs asset contrast

Flags document responses that bypass while static assets HIT — a common origin-cost trap dashboards average away.

Evidence on every finding

Status, Age, request URL, and response headers. Dry engineer language for remediations — no generative guesswork.

Safety defaults

Ownership gate, sequential probes, robots honor, hard GET budgets, free-tier rate limits, identifiable User-Agent (see /bot).

What you get

Ticket-ready cache telemetry

The goal is not another chart. It is a report your team can act on after one ownership-gated run.

  1. 01

    Prioritized findings

    What failed, on which URLs, with severity grounded in evidence — not a wall of raw headers.

  2. 02

    Edge Health score

    Starts at 100. Deductions listed with reasons. Inconclusive when the sample is too weak to score.

  3. 03

    Header evidence

    Normalized cache status, Age, Cache-Control, and CDN-specific headers attached to findings.

  4. 04

    Concrete remediations

    Engineer-facing fix language: cache keys, headers, and configuration — not marketing fluff.

Edge Health

Transparent deductions
from 100

Every point off is explained. Sample size and confidence matter: when data is weak, we say Inconclusive instead of inventing a hit ratio. Phase 1 scores cache correctness only — not capacity.

Base
100
Tracking-param fragmentation (×2 paths)
−12
HTML uncached while /assets/* HITs
−10
Edge Health
78
GET /pricing · headersHIT

cf-cache-status: HIT

x-vercel-cache: HIT

Age: 1842

Cache-Control: public, s-maxage=3600

Vary: Accept-Encoding

x-cache: Hit from cloudfront

evidence attached · no AI summary · paste into ticket

Compared to workarounds

Not a vendor dashboard.
Not a load test.

Dashboards need a vendor account and show aggregates. Lighthouse is lab/client performance. curl works — but does not systematize discovery, multi-URL sampling, or a shareable score.

CapabilityCacheProbeDashboardsLighthousecurl
URL-level MISS / BYPASS diagnosismanual
Multi-CDN status normalizationmanual
Query-param fragmentation checksmanual
Ownership gate before probes
Evidence-backed Edge Health score
Multi-URL sample + assetsmanual
Production-safe sequential GETs
Client / lab performance metrics

FAQ

Straight answers for SRE teams

Vendor dashboards need an account and show aggregate cache hit ratio. CacheProbe is an external, URL-level check that explains why a specific path is MISS, DYNAMIC, or BYPASS — and how to fix the cache key or headers.

You can. CacheProbe discovers a same-origin URL sample (robots, sitemaps, shallow crawl), then systematizes sequential Age checks, clean vs tracking-param URLs, multi-CDN status normalization, and a best-practice checklist into a report you can paste into a ticket.

Lighthouse is lab and client focused. It does not detect query-parameter fragmentation across CDN cache keys or normalize cf-cache-status, X-Cache, and x-vercel-cache into one multi-URL report.

Full FAQ

Get started

Run a cache audit on a domain you own

Create an account, verify ownership, launch a probe. You get findings, Edge Health, and header evidence — not a synthetic load curve.

Read the FAQ·Sign in

https://