Cache at every layer that pays for itself.
Caching Layers: cache at every layer that pays for itself
absorb bursts before they become outages
Each layer adds invalidation complexity.
Caching layers stack: browser cache, CDN, app cache, distributed cache, DB page cache. Each absorbs load from the next; tuning one reshapes the rest.
Browser: Cache-Control, ServiceWorker.
CDN: 90% byte-shift for static, much more for cached dynamic.
App-level cache: in-process or Redis. Cheap reads, write contention.
DB page cache: free, just give the DB enough RAM.
Slow product page (origin 600ms).