Cache (remember)
cache.remember(clé, ttl, fn) renvoie la valeur en cache ou la calcule une seule fois puis la mémorise. Ici deux appels identiques : le premier calcule le rapport, le second est servi depuis le cache — même horodatage, la fabrique n'a tourné qu'une fois. Store branchable (KV SDK partagé, ou mémoire par isolat).
Astuce
createCache sérialise en JSON, donc vous mettez en cache des objets typés. remember distingue « absent » de « valeur falsy » : false, 0 et la chaîne vide sont mis en cache (pas re-calculés). kvStore partage entre requêtes et processus ; memoryStore est par isolat (requête courte).
Lancez pour voir remember() calculer une fois puis mettre en cache.
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());
// Plain get / put / forget:
await cache.put("flag", true, 60);
await cache.get<boolean>("flag"); // true | null
await cache.forget("flag");
// pull (get + forget), add (set-if-absent):
const token = await cache.pull("one-time");
const won = await cache.add("lock", 1, 10); // true only if it was not set