Aller au contenu

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.