Guide · serving-layer diagnosis
Diagnose where an old response came from
Start with the presence or absence of a new fetch, then collect positive evidence from the named worker, intermediary, or controlled origin.
The quick path
- No request? Check
pageshow.persistedand back/forward history first. Then check whether a service worker controls the client and log its Cache API decision. - New request? Inspect the named intermediary’s
Cache-Status,Age, andVia, then correlate a redacted A/B marker with the origin counter. - No positive signal? Repeat from a fresh client with fixed URL, host, redirects, and client inputs. Treat the source as unknown rather than inferring it from
200or a missing header.
Small probe checklist
- Use a reserved synthetic URL and redacted marker A/B; do not log cookies, authorization, or personal data.
- Keep method, URI, Host/SNI, redirect policy, request headers, client state, and edge/POP fixed.
- Capture status, redirect chain,
Cache-Control,Age,Cache-Status,Via, marker, timestamp, and origin counter. - Run a fresh profile with no service-worker registration and a direct-origin control; neither one erases evidence from other layers.
- Repeat serialized and concurrent cases separately; one clean A/B result does not prove absence of leakage at another key, POP, partition, or hop.
Read the result carefully
| Positive observation | Scoped reading | Do not infer |
|---|---|---|
pageshow.persisted === true and no new request | History/bfcache can explain this display. | That the original bytes came from the HTTP cache. |
Worker log says Cache.match hit | This worker/Cache API supplied the response in this client. | That the browser HTTP cache or edge is empty. |
Named Cache-Status: edge-test; hit plus unchanged origin counter | The named cache reports satisfying this request without forwarding. | That hidden hops, other POPs, or other users have the same result. |
| Origin counter increments with marker B | The controlled origin received this request and emitted B. | That another layer cannot still display A. |
Expected, not measured: the runner had no
curl, browser, authorized endpoint, or permitted loopback listener. Use the full dated report for the unexecuted command template, warm-up order, standards sources, and edge cases.