unstable_cache

unstable_cache permet de mettre en cache les résultats d'opérations coûteuses, comme des requêtes de base de données, et de les réutiliser entre plusieurs requêtes.

import { getUser } from './data';
import { unstable_cache } from 'next/cache';

const getCachedUser = unstable_cache(
  async (id) => getUser(id),
  ['my-app-user']
);

export default async function Component({ userID }) {
  const user = await getCachedUser(userID);
  ...
}

Bon à savoir : L'accès à des sources de données dynamiques comme headers ou cookies dans une portée de cache n'est pas pris en charge. Si vous avez besoin de ces données dans une fonction mise en cache, utilisez headers en dehors de la fonction et passez les données dynamiques requises comme argument.

Avertissement : Cette API est instable et pourrait changer dans le futur. Nous fournirons une documentation de migration et des codemods si nécessaire, au fur et à mesure que cette API se stabilisera.

Paramètres

const data = unstable_cache(fetchData, keyParts, options)()
  • fetchData : Une fonction asynchrone qui récupère les données à mettre en cache. Doit être une fonction qui retourne une Promise.
  • keyParts : Un tableau qui identifie la clé de cache. Doit contenir des valeurs globalement uniques qui, ensemble, identifient la clé des données mises en cache. La clé de cache inclut aussi les arguments passés à la fonction.
  • options : Un objet qui contrôle le comportement du cache. Peut contenir les propriétés suivantes :
    • tags : Un tableau d'étiquettes pouvant être utilisées pour contrôler l'invalidation du cache.
    • revalidate : Le nombre de secondes après lesquelles le cache doit être revalidé. Omettre ou passer false pour mettre en cache indéfiniment ou jusqu'à ce que les méthodes revalidateTag() ou revalidatePath() correspondantes soient appelées.

Retour

unstable_cache retourne une fonction qui, lorsqu'elle est invoquée, retourne une Promise résolue avec les données en cache. Si les données ne sont pas dans le cache, la fonction fournie sera invoquée, et son résultat sera mis en cache puis retourné.

Historique des versions

VersionChangements
v14.0.0Introduction de unstable_cache.