Chapitre 1 · Leçon 2
Cache, CORS, cookies et headers de sécurité
Section 1
Step 1
Le cache HTTP évite des requêtes inutiles. Cache-Control définit la politique de cache, ETag permet la validation conditionnelle.
snippet.typescript
1// Configurer le cache dans Express
2
3// ✅ Ressources statiques — cache long
4app.use('/static', express.static('public', {
5 maxAge: '30d', // Cache 30 jours côté client
6 etag: true, // Activer ETag pour validation conditionnelle
7 lastModified: true,
8}));
9
10// ✅ Réponse API — pas de cache (données dynamiques)
11app.get('/api/tutorials', (req, res) => {
12 res.set({
13 'Cache-Control': 'no-store', // Ne pas cacher du tout
14 'Pragma': 'no-cache', // Legacy HTTP/1.0
15 });
16 res.json(tutorials);
17});
18
19// ✅ Page rendue — cache court avec revalidation
20app.get('/tutorials/:slug', (req, res) => {
21 res.set('Cache-Control', 'public, max-age=60, stale-while-revalidate=300');
22 // max-age=60 : frais pendant 60s
23 // stale-while-revalidate=300 : servir l'ancien pendant 5min en background
24 res.json(tutorial);
25});
26
27// ✅ Assets immutables (hash dans le nom) — cache permanent
28// tutorial-abc123.js → jamais modifié, si l'app change → nouveau hash
29app.get('/assets/*', (req, res) => {
30 res.set('Cache-Control', 'public, max-age=31536000, immutable');
31 // Pas de revalidation nécessaire car le nom de fichier change avec le contenu
32});Section 2
Step 2
CORS est une politique de sécurité du navigateur qui bloque les requêtes vers un domaine différent. Le serveur déclare quels origines sont autorisés via des headers.