Caching and Performance Engineering · Caching Fundamentals

The Caching Layers of a Web System

Browser, CDN, reverse proxy, application and database caches — and what belongs where.

Create a free account to save this page, take notes and track your progress. Sign in

Caching happens at many layers: the browser (HTTP cache, service workers), the CDN/edge (static assets, public pages, API responses), reverse proxies (Varnish, Nginx), the application (in-process memory, Redis/Memcached), and the database (buffer pool, materialized views). The closer to the user, the bigger the latency win — but the harder invalidation becomes. Decide per data type: how fresh must it be, is it public or per-user, and what does a miss cost?

Data                         | Layer                         | Freshness
-----------------------------|-------------------------------|-----------------------------
app.3f9a2c.js, fonts, images | Browser + CDN (immutable)     | forever (content-hashed URL)
Product page (public)        | CDN, s-maxage=60, SWR         | ≤ 1 minute
Product prices               | Redis, TTL 30s + invalidation | seconds
User's cart                  | Redis per user / DB           | always fresh, never shared
Analytics dashboard          | Materialized view, hourly     | 1 hour

Common pitfalls

  • Caching personalized responses in shared caches.
  • Caching everything everywhere with no invalidation plan.
  • Ignoring the cost of cold caches after deploys or failovers.

Key points

  • Cache closest to the user that correctness allows
  • Decide freshness per data type
  • Public vs private data determines the layer

Further reading: MDN: HTTP caching

Practice questions

Why can static assets be cached 'forever' safely?

Answer

When filenames include a content hash, any change produces a new URL, so old cached files are never served for new code.

What questions decide where a piece of data should be cached?

Answer

How fresh it must be, whether it's public or user-specific, how expensive a miss is, how often it's read vs written, and how invalidation will work.

Open in the app to mark lessons complete, take notes and track your progress.

Was this page helpful?