Cache¶
Le cache HTTP Guardian est volontairement limité aux GET idempotents. Le client ne cache pas une mutation et ne remplace pas un store applicatif.
Activer un store¶
import { createHttpClient, memoryCache } from "@cedvict/http-guardian";
const api = createHttpClient({
baseUrl,
auth,
parser,
cache: memoryCache({ maxEntries: 500 })
});
Déclarer l'intention par requête¶
api.get<Project[]>("/projects", {
cache: {
ttlMs: 60_000,
tags: ["projects"],
policy: "networkFirst"
}
});
| Politique | Comportement | Quand l'utiliser |
|---|---|---|
cacheFirst |
Retourne le cache valide, sinon le réseau. | Référentiels stables. |
networkFirst |
Tente le réseau et met à jour le cache. | Listes qui doivent rester fraîches avec solution de repli. |
cacheOnly |
Lit seulement le cache. | Mode hors-ligne contrôlé. |
networkOnly |
Ignore le cache. | Données sensibles ou fortement mutables. |
staleWhileRevalidate |
Retourne le cache puis rafraîchit en fond. | Confort UI sur listes fréquentes. |
Invalidation¶
Utiliser des tags stables et les invalider après mutation.
await api.post("/projects", { json: payload, idempotencyKey });
await api.cache.invalidateByTag("projects");
Ne pas utiliser une URL signée, une query aléatoire ou un identifiant temporaire comme tag.