ENbext.dev
DocumentationOutils pour applications

Traduction automatique depuis l’anglais. Consulter l’original.

Sur cette page

Cache

createCache de @bext-stack/framework/kv correspond au Cache::remember de Laravel dans TypeScript : mémoriser une valeur sérialisable en JSON derrière une clé, via un stockage interchangeable. Ce mécanisme est distinct du cache de fragments <ISR> décrit dans @bext-stack/framework/cache, qui met en cache des sous-arbres HTML déjà rendus ; voir Mise en cache.

Quand l'utiliser#

  • Éviter de recalculer une opération coûteuse pendant sa période de validité : rapport, agrégat ou réponse d’une API tierce.
  • Partager de petites options ou valeurs entre requêtes via le stockage KV du SDK.

remember et fonctions associées#

ts
import { createCache, kvStore } from "@bext-stack/framework/kv";

const cache = createCache({ store: kvStore({ appId: "my-site" }) });

// compute once, serve from cache within the TTL:
const report = await cache.remember("report:monthly", 300, () => buildReport());

await cache.put("flag", true, 60);
await cache.get<boolean>("flag");   // true | null
await cache.has("flag");
await cache.forget("flag");
const token = await cache.pull("one-time");   // get + forget
const won   = await cache.add("lock", 1, 10); // set only if absent → true/false

createCache sérialise en JSON : vous mettez donc en cache des objets typés, pas seulement des chaînes. remember distingue correctement une valeur absente d’une valeur évaluée comme fausse : false, 0 et "" sont bien mis en cache ; ils ne sont pas considérés comme absents et recalculés.

Membre Fait
remember(key, ttl, fn) lire, ou calculer, stocker et renvoyer
get(key) / put(key, value, ttl?) lecture et écriture typées
has / forget présence et suppression
pull(key) lire puis oublier
add(key, value, ttl?) écrire uniquement en cas d’absence : un verrou simple

Stockages#

Le cache est une couche légère au-dessus d’un CacheStore :

Magasin Portée Utiliser
kvStore({ appId }) requête croisée/processus (SDK KV sur bouclage) partagé, durable
memoryStore() per-V8-isolat Map avec TTL tests de courte durée, à portée de requête

Apportez le vôtre en implémentant get / set / delete. Une option prefix espace les clés afin que deux caches sur un magasin n'entrent pas en collision.

Essayez-le#

Le démo de cache en direct appelle remember deux fois : l'usine s'exécute une fois et le deuxième appel est servi à partir du cache (même horodatage). Source dans sites/demo/src/app/examples/cache/page.tsx.

Voir aussi#

Modifier cette page ↗Besoin d’aide ? ↗
Rechercher dans la documentation

Saisissez un sujet, une commande ou une question.