Kelly Mears

Cache Invalidation

Deciding when a cached value has stopped being correct — famously one of the hard problems.

Web Platform2 min read215 words13 out · 27 in
also calledInvalidationCache busting

Cache invalidation is the problem of knowing when a stored copy of a computed value is no longer valid. Phil Karlton's line — that the two hard things in computer science are cache invalidation and naming things — endures because both are about maintaining a correspondence that nothing enforces.

The available strategies are few. Time-based expiry is simple and always either too eager or too stale. Event-based invalidation is precise and requires every writer to know every cache. Content-based keys — a Fingerprint over the inputs — invalidate exactly when they should and require the inputs to be enumerable. Immutable, content-hashed asset filenames are the last strategy taken to its conclusion: nothing is ever invalidated because nothing is ever overwritten.

Caches also multiply invisibly. A single request may pass through a browser cache, a CDN, a framework's data cache, an application memo, and a database query cache — each with its own lifetime. A change that appears in one and not another produces the characteristic "it works on my machine, and also on yours, but not for anyone else" report.

The subtlest form is a cache whose scope is smaller than assumed: a value memoized per process behaves like a cache within one instance and like nothing at all across several. See Incremental Static Regeneration.

See also11

Determinism

The property that identical inputs produce identical outputs, and the foundation of caching and verification.

Systems & Tooling61 connections

Static Site Generation

Rendering every page to a file at build time, so serving is just handing over bytes.

Web Platform19 connections

React Server Components

Components that execute only on the server and never ship their code to the browser.

Web Platform21 connections

Domain Name System

The distributed directory translating names to addresses, and the layer where propagation delays live.

Systems & Tooling27 connections

Server-Side Rendering

Producing a page's HTML on the server so the first response is already content.

Web Platform23 connections

Record and Replay Testing

Capturing a real interaction once and replaying it deterministically in later test runs.

Agents & Language Models14 connections

Write-Behind Cache

A cache that acknowledges a write immediately and persists it to the real store later, trading durability for write latency.

Data & Content5 connections

Naming

Choosing identifiers so the code states its own meaning without commentary.

Method59 connections

Hash Function

A function mapping arbitrary input to a fixed-size digest, used for identity, integrity, and addressing.

Systems & Tooling30 connections

Materialized View

The stored result of a query, kept as a table so that expensive reads become cheap, at the cost of keeping that result up to date.

Data & Content9 connections

Time to Live

A limit on how long something may live, counted in hops or seconds, which keeps lost packets from circling forever and tells caches when their copies go stale.

Networks & Distribution11 connections

Linked from27