Skip to main content

Client-Side vs. Server-Side Caching

Caching isn't a single "thing" you turn on; itโ€™s a strategy that happens at different points along the journey of a web request.

1. Client-Side Caching (The Browser)โ€‹

This happens directly on the user's device (Phone, Laptop). The browser decides to save certain files locally so it doesn't have to ask the server for them again.

What is cached here?โ€‹

  • Static Assets: Images, Logos, CSS stylesheets, and JavaScript files.
  • HTML: Sometimes the entire structure of a page.

How do we control it?โ€‹

We use HTTP Headers sent from the server:

  • Cache-Control: max-age=31536000 (Tells the browser: "Keep this for 1 year!")
  • ETag: A unique "fingerprint" of a file. If the fingerprint hasn't changed, the browser uses the local copy.

2. Server-Side Caching (The Backend)โ€‹

This happens on your server (where your Node.js/Python code lives). Instead of the user saving data, you save the data to avoid doing heavy work.

What is cached here?โ€‹

  • Database Queries: Results of "Top 10 Courses" or "User Profile."
  • API Responses: The JSON output from a third-party API.
  • Computed Data: Results of a complex mathematical calculation.

How do we control it?โ€‹

We use in-memory stores like Redis or Memcached. The server checks the cache before it ever touches the database.

The Comparisonโ€‹

FeatureClient-Side CachingServer-Side Caching
LocationUser's Browser/DeviceYour Backend Infrastructure
Best ForImages, UI, ScriptsData, Logic, Database Results
ControlSuggestion (via Headers)Full Control (via Code)
GoalFaster Page Load TimeReduced Database Load

The Hybrid Flowโ€‹

In a professional app at CodeHarborHub, we use both.

Summary Checklistโ€‹

  • I know that Client-side caching saves files on the user's device.
  • I understand that Cache-Control headers manage browser behavior.
  • I know that Server-side caching prevents repeated database queries.
  • I understand that tools like Redis are used for server-side caching.
The "Clear Cache" Problem

If you update your CSS file but the user's browser has it cached for a year, they won't see your changes! This is why we use Cache Busting (adding a version number like style.css?v=2).