Comprendre le mécanisme
Un navigateur, un proxy partagé et un cache applicatif sont des mécanismes distincts. Un objet peut être frais pour une certaine durée sans être autorisé pour tout utilisateur. Une clé de cache qui omet une dimension pertinente peut produire une réponse incorrecte ou divulguer un contenu privé. L’invalidation, la variation des représentations et les droits d’accès doivent être conçus ensemble.
Raisonner et vérifier
Testez les caches avec au moins deux identités et plusieurs variantes de représentation. Une seconde réponse rapide ne prouve pas qu’elle est correcte pour le nouvel acteur. Inventoriez les clés, les règles d’admission, les durées et le traitement des erreurs. Contrôlez aussi les caches internes à l’application : un en-tête HTTP prudent ne répare pas un résultat déjà mélangé par un cache serveur mal indexé.
Partage
Un cache partagé peut répondre à plusieurs utilisateurs. La portée du cache détermine les risques de partage. Un cache public peut répondre à plusieurs utilisateurs sans repasser par l’origine. Une donnée personnelle doit donc avoir une politique de stockage et de partage cohérente avant d’entrer dans ce cache.
Erreur fréquente à comprendre
Tout cache HTTP est privé à un seul compte.
La portée du cache détermine les risques de partage.
Clé de représentation
La clé doit distinguer les représentations pertinentes. Les dimensions de personnalisation peuvent dépasser l’URL. La clé doit prendre en compte les dimensions réellement variables, telles que tenant ou langue. Une URL identique ne signifie pas que le contenu peut être partagé entre toutes les identités.
Erreur fréquente à comprendre
L’URL seule suffit pour toutes les données personnalisées.
Les dimensions de personnalisation peuvent dépasser l’URL.
Deux acteurs
Tester deux utilisateurs peut révéler une fuite. La comparaison d’identités teste une frontière supplémentaire. Demandez la même route avec A puis B dans un laboratoire. Vérifiez contenu, headers et origine de la réponse ; recevoir les données de A pour B révèle une frontière de confidentialité rompue.
Erreur fréquente à comprendre
Un test avec un seul compte prouve l’isolation inter-comptes.
La comparaison d’identités teste une frontière supplémentaire.
Origine évitée
Une réponse en cache peut éviter le passage à l’origine. Le cache peut servir sans ce traitement. Une réponse fraîche peut être servie sans exécuter le contrôleur. Ne supposez pas qu’un contrôle ajouté à l’origine protège une copie déjà publiée dans un cache intermédiaire.
Erreur fréquente à comprendre
Toute lecture de cache réexécute le contrôleur de droits.
Le cache peut servir sans ce traitement.
Deux décisions
La politique de cache et l’autorisation sont distinctes. Le stockage n’accorde pas les droits. Autoriser une lecture et autoriser le stockage partagé sont des décisions distinctes. Une réponse légitime pour Alice peut devenir une fuite si elle est conservée puis réutilisée pour Bob.
Erreur fréquente à comprendre
Mettre en cache donne une permission métier à tous.
Le stockage n’accorde pas les droits.
Erreurs et redirections
Les erreurs et redirections méritent une revue de cache. D’autres réponses participent au comportement des clients. Une redirection ou une erreur peut contenir une destination ou un détail personnalisé. Révisez leur stratégie de cache, pas seulement celle des réponses 200 contenant les données nominales.
Erreur fréquente à comprendre
Seuls les documents 200 peuvent affecter les parcours cachés.
D’autres réponses participent au comportement des clients.
Langue
Les variantes linguistiques peuvent exiger une dimension de clé. Le contenu peut dépendre de l’en-tête de langue. Si Accept-Language influence le contenu, les variantes doivent être sélectionnées correctement. Testez deux valeurs au même chemin afin d’éviter une interface ou un document servi dans la mauvaise langue.
Erreur fréquente à comprendre
Une langue différente impose toujours la même représentation.
Le contenu peut dépendre de l’en-tête de langue.
Cache applicatif
Un cache applicatif et un cache HTTP ont des règles distinctes. Les mécanismes doivent être conçus séparément. Une clé Redis et un cache HTTP ont des contrats différents. Vérifiez portée et invalidation de chacun ; corriger Cache-Control ne modifie pas automatiquement une entrée métier déjà partagée en mémoire.
Erreur fréquente à comprendre
Cache-Control contrôle automatiquement tout cache métier interne.
Les mécanismes doivent être conçus séparément.
Fraîcheur
La durée de fraîcheur n’établit pas la confidentialité. Même une fenêtre courte peut exposer des données. Un contenu de quelques secondes peut être très confidentiel. max-age mesure une durée d’usage sans revalidation selon le contrat, pas un droit universel de lire les données pendant cette durée.
Erreur fréquente à comprendre
Un TTL court rend toute fuite acceptable et impossible.
Même une fenêtre courte peut exposer des données.
Retrait
Le retrait d’un objet peut demander une stratégie d’invalidation. La propagation du retrait doit être définie. Supprimer un document à l’origine peut laisser des copies servies jusqu’à expiration ou purge. Définissez délai de retrait et invalidation selon la sensibilité, puis mesurez le résultat à chaque cache concerné.
Erreur fréquente à comprendre
Modifier la base invalide automatiquement tout CDN.
La propagation du retrait doit être définie.
Atelier guidé : lire, expliquer et vérifier le code
A → GET /lab/account → body.user=A
B → GET /lab/account → body.user=A, Age: 120
Contrat : chaque utilisateur ne doit recevoir que son compte. La demande de B reçoit body.user=A avec un Age positif. Le résultat viole le contrat personnel annoncé et suggère une réutilisation à examiner. Corrigez portée et clé, puis traitez les copies déjà présentes et rejouez le scénario à deux utilisateurs avec et sans cache chaud.
La durée ne supprime pas la fuite. CORS n’accorde pas ces droits métier. La réponse de A est exposée dans le parcours de B. Le résultat reçu ne prouve pas une identité légitime commune.
Travail pratique : Chargez le même chemin avec deux utilisateurs de laboratoire puis avec deux langues. Identifiez tous les caches qui peuvent intervenir.
Critères de correction : Observez l’origine du résultat et comparez les champs privés. Vérifiez que la clé et la politique distinguent les contextes incompatibles, puis testez modification de contenu, déconnexion et erreur de dépendance.
Exemple commenté
Cache navigateur ≠ cache partagé ≠ cache métier
Clé métier illustrative : tenant + langue + version du catalogue
Réponse personnelle : politique de partage spécifiqueLe schéma décrit des dimensions possibles, à choisir selon les résultats réels. Il ne justifie pas de mettre une page personnelle dans un cache public.
Exercice de mise en pratique
Chargez le même chemin avec deux utilisateurs de laboratoire puis avec deux langues. Identifiez tous les caches qui peuvent intervenir.
Voir une proposition de correction
Observez l’origine du résultat et comparez les champs privés. Vérifiez que la clé et la politique distinguent les contextes incompatibles, puis testez modification de contenu, déconnexion et erreur de dépendance.
Points de vérification
- Identifier tous les caches.
- Séparer fraîcheur et permission.
- Tester deux identités au minimum.
Contrôle de connaissances
Cours associé : 27. Caches : fraîcheur, stockage et confidentialité ↗Validation du module
101 questions, objectif pédagogique de 75 %. Durée conseillée de 150 minutes, sans limite imposée. Les questions et les choix sont mélangés ; le corrigé apparaît après validation. Le contrôle rapide de la leçon et l’examen final du cours restent des exercices distincts.
Commencer ou reprendre les 101 questions →Cette marque suit votre propre avancement ; elle ne certifie pas la maîtrise du sujet. Effectuez l’exercice avant de passer à la suite.
