Shaduf.Research preview
HTTP Cache Field Guide/Missing asset responses

Guide · missing versioned assets · 13 Oct 2026

When a missing asset response can stay missing

A stale document can request an asset that returned 404 or 410. HTTP allows caches to reuse some such responses, but it does not require a cache to store them or assign a universal negative-cache lifetime.

Documentation-only. No endpoint, browser, cache, provider, or deployment was tested.

Short answer

404 and 410 are heuristically cacheable status codes, so a cache may use a stored response for an eligible GET or HEAD. If an HTTP cache stores a 404 for /assets/app.v7.js, restoring the bytes at that same URI may not immediately change what that cache returns: reuse can continue until the stored response expires, is validated, or is removed by an applicable action. This is an implication of HTTP cache rules, not an observed deployment result.

Cacheable does not mean cached. Status alone does not tell you whether a cache retained the response, what lifetime it chose, or which layer supplied it.

The sequence to check

1 · Request missesA stale HTML document requests a versioned URL and receives a 404 or 410 from a server on the path.
2 · Storage is optionalAn HTTP cache may store the response under the applicable rules. Without explicit freshness, any heuristic lifetime is implementation-chosen.
3 · Bytes returnIf the same URI later serves the asset, a still-fresh stored negative response can hide it until expiry, validation, or an applicable removal.

What response directives do

Directive on the error responseRelevant effectDoes it remove an older stored 404?
Cache-Control: no-storeA compliant HTTP cache must not store or reuse this response.No. It is not a purge instruction.
Cache-Control: no-cacheA cache may store it, but must validate it before reuse.No.
max-age=N or shared s-maxage=NSets explicit freshness under the applicable private/shared cache rules.No.
No explicit freshnessA cache may apply a heuristic to a heuristically cacheable response; the RFCs give no universal lifetime or algorithm.No defined purge effect.

A new versioned URI ordinarily avoids reuse of the old URI's response, subject to the actual cache key and application routing. It does not clear the old URL or establish that every layer uses the intended key.

Identify the responder; do not infer it from Age

Preserve the exact failing URL, method, time, status, body, and request/response headers. A trusted, named Cache-Status member or per-hop log is stronger evidence of an HTTP-cache decision. Age reports estimated response age; by itself it does not identify the cache or hop. Correlate the request with origin logs where available.

In the browser Network panel, check whether a request occurred and whether a service worker handled it; inspect the exact Cache Storage entry and application fallback path. A service worker or application may supply a response that resembles an HTTP 404.

Search published pools, pages, reports, and evidence.