When caches lie
A cache is a promise that old data is still good enough. Most bugs I’ve chased in production came from forgetting the ‘enough’ part. How I choose TTLs, why invalidating on write beats clever expiry, and the logging that finally told me which layer was serving stale pages.