This example shows how to set HTTP headers to control cache behavior in Express.
You can customize cache rules using different Cache-Control directives.
Examples
This tells browsers not to store any cache at all.
Express
res.set('Cache-Control', 'no-store');
This allows caching for 60 seconds before invalidation.
Express
res.set('Cache-Control', 'max-age=60');
This allows shared caches to store the response for 5 minutes.
Express
res.set('Cache-Control', 'public, max-age=300');
This caches data only for the user and requires revalidation before use.
Express
res.set('Cache-Control', 'private, no-cache');
Sample Program
This Express app sets a cache expiration of 10 seconds for all responses. The homepage shows the current time. If you refresh within 10 seconds, the cached response may be used. After 10 seconds, the cache invalidates and the server sends fresh data.
Express
import express from'express';
const app = express();
// Middleware to set cache control headers
app.use((req, res, next) => {
// Invalidate cache after 10 seconds
res.set('Cache-Control', 'public, max-age=10');
next();
});
app.get('/', (req, res) => {
res.send(`Current time: ${new Date().toISOString()}`);
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
OutputSuccess
Important Notes
Cache-Control headers are the main way to control cache invalidation in HTTP.
Use short max-age values for frequently changing data.
Remember to test cache behavior using browser DevTools Network tab.
Summary
Cache invalidation keeps data fresh by controlling how long cached data is valid.
Express apps use Cache-Control headers to set cache rules.
Choose the right strategy based on how often your data changes.
Practice
(1/5)
1. What is the main purpose of cache invalidation in an Express app?
easy
A. To permanently store data without expiration
B. To increase server CPU usage
C. To keep cached data fresh and up-to-date
D. To disable caching completely
Solution
Step 1: Understand cache invalidation
Cache invalidation means removing or updating cached data when it becomes outdated.
Step 2: Purpose in Express apps
Express uses cache invalidation to ensure users get fresh data, not stale cached content.
Final Answer:
To keep cached data fresh and up-to-date -> Option C
Quick Check:
Cache invalidation = fresh data [OK]
Hint: Cache invalidation means keeping data fresh [OK]
Common Mistakes:
Thinking cache invalidation disables caching
Confusing cache invalidation with permanent storage
Believing it increases CPU usage intentionally
2. Which of the following is the correct way to set a Cache-Control header in Express to prevent caching?
easy
A. res.set('Cache-Control', 'max-age=3600')
B. res.set('Cache-Control', 'no-store')
C. res.set('Cache-Control', 'public, max-age=86400')
D. res.set('Cache-Control', 'private, max-age=600')
Solution
Step 1: Understand Cache-Control values
'no-store' tells browsers not to cache the response at all.
Step 2: Identify the option that prevents caching
res.set('Cache-Control', 'no-store') uses 'no-store', which disables caching completely.
Final Answer:
res.set('Cache-Control', 'no-store') -> Option B
Quick Check:
Prevent caching = 'no-store' [OK]
Hint: Use 'no-store' to disable caching in Cache-Control [OK]
But clients still see cached responses. What is the likely problem?
medium
A. Express does not support Cache-Control headers
B. The header name "Cache-Control" is misspelled
C. res.json() automatically overrides Cache-Control headers
D. Using "no-cache" allows caching but requires revalidation
Solution
Step 1: Understand "no-cache" meaning
'no-cache' means caches can store response but must revalidate before reuse.
Step 2: Why clients see cached data
If revalidation is skipped or proxy ignores it, cached data may be served.
Final Answer:
Using "no-cache" allows caching but requires revalidation -> Option D
Quick Check:
'no-cache' means revalidate before reuse [OK]
Hint: "no-cache" means revalidate, not disable caching [OK]
Common Mistakes:
Thinking 'no-cache' disables caching completely
Assuming header name is wrong without checking
Believing res.json() removes headers
5. You want to cache user profile data in Express but ensure it updates immediately after a user changes their info. Which cache invalidation strategy is best?
hard
A. Set a long max-age and manually clear cache on user update
B. Use 'no-store' to never cache user profiles
C. Set a short max-age and rely on automatic expiration
D. Cache indefinitely and ignore updates
Solution
Step 1: Understand caching user profiles
User profiles benefit from caching for speed but must update after changes.
Step 2: Choose invalidation strategy
Long max-age improves performance; manual cache clearing on update ensures fresh data.
Final Answer:
Set a long max-age and manually clear cache on user update -> Option A
Quick Check:
Manual invalidation + long cache = fresh and fast [OK]
Hint: Use manual cache clear after updates for fresh user data [OK]
Common Mistakes:
Using 'no-store' loses caching benefits
Relying only on short max-age causes frequent reloads
Ignoring cache invalidation leads to stale data
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.