Inside dnsmasq, a forwarded cached answer ages with TTL, while a configured host-record is generated from configuration. SIGHUP clears forwarded state while the configured record remains, even at local TTL zero.

dnsmasq separates forwarded cache entries from configured local names

dnsmasq can forward DNS questions upstream, retain supported answers in a bounded cache, and serve names configured locally. These are different sources of data. A repeated answer may be a cache hit or a local configuration result. Establishing which source supplied it is essential when a hostname disagrees with the authority or continues resolving after a cache flush. ...

April 15, 2028 · 6 min · XB Field Notes
The same eligible 200 cache key moves from MISS through a fresh HIT with configured 2s validity to EXPIRED. Separately, six held cold-fill clients share one origin request under the cache lock.

A microcache serves fresh entries briefly and coalesces misses explicitly

A microcache keeps reusable responses for a short freshness lifetime, often a few seconds. Requests for the same selected representation can reuse a fresh entry during that window. The response might lag a new origin update, but it is not HTTP-stale merely because it came from a cache. Expiration, permission to serve stale content, and concurrent cache filling are separate policies. ...

March 12, 2028 · 6 min · XB Field Notes
Three lookups separated by 1.2 seconds contact the authority three times at TTL 1 and once at TTL 20 in the article example. Expiry alone does not schedule a query.

DNS TTL trades repeated upstream queries against retained answers

A DNS TTL is a lifetime attached to cached data, not a refresh job scheduled for every second. A cache can reuse a valid answer while it retains that entry. After expiry, a subsequent request usually requires fresh resolution unless another configured behavior applies. An idle record need not produce an upstream query merely because its TTL has reached zero. ...

March 1, 2028 · 6 min · XB Field Notes
Matching inputs reuse a recorded RUN result. Changing file permissions or contents invalidates COPY and its dependent RUN in the source’s simple chain; changing mtime alone does not.

Docker rebuilds reuse recorded work, including stale work

Docker’s build cache stores results of build operations so a later build can reuse work whose relevant inputs still match. A cache hit does not mean the command ran again and produced identical output. It means the builder accepted an existing result. That distinction matters for package installation, generated timestamps, remote downloads, and any operation whose output could change without a corresponding change to its declared inputs. ...

February 20, 2028 · 5 min · XB Field Notes
Source-described nginx 1.28.0 fixture: AAAA changes to BBBB with the same modification time and four-byte length. The ETag remains the same; the old tag receives 304.

nginx validators are only as sound as their representation identity

A validator lets a recipient ask whether its stored representation still matches the selected one. A successful conditional GET can return 304 without retransmitting the body. Freshness is a separate decision: it determines when a stored response can be reused without that request. An ETag does not itself specify a cache lifetime, and a 304 is not a replacement body. ...

February 17, 2028 · 5 min · XB Field Notes
PostgreSQL shared buffers sit above the OS page cache; an OS cache hit returns memory data and avoids the lower storage path.

Postgres uses two cache layers

For ordinary buffered relation I/O, PostgreSQL’s shared buffers sit above the operating system’s file cache. A shared-buffer hit avoids another read through that lower layer; a shared-buffer miss can still be served from memory by the operating system. The same file data can occupy both caches, so this is not a promise that PostgreSQL and the kernel share one physical copy. The mmap shared-memory settings concern shared regions, not a claim that ordinary table files are directly memory-mapped. ...

January 27, 2028 · 5 min · XB Field Notes
A clock and a full capacity bin illustrate different causes of a miss. A positive TTL cannot protect an eligible key from capacity eviction.

Redis expiry is a deadline, eviction is a capacity policy

Expiration and eviction can both turn a successful lookup into a miss, but they answer different questions. Expiration follows a key’s deadline. Eviction removes eligible keys to respond to memory pressure. Extending a TTL cannot prevent capacity-driven eviction, and increasing memory cannot correct a deadline that the application set incorrectly. ...

December 26, 2027 · 6 min · XB Field Notes
Fetch no-store obtains version two while the stored version one remains; reload obtains and stores version three. Response Cache-Control policy and Fetch cache mode are distinct.

Cache-Control is a contract between cache and origin

A cache policy needs a behavioral test, not just a header-presence check. Two responses can both contain max-age yet behave differently because one also requires validation or prohibits storage. The request matters too: a browser can bypass an otherwise reusable copy without changing the origin’s response policy or deleting an older cached entry. ...

December 20, 2027 · 5 min · XB Field Notes