unstable_cache

unstable_cache le permite almacenar en caché los resultados de operaciones costosas, como consultas a bases de datos, y reutilizarlos en múltiples solicitudes.

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);
  ...
}

Es bueno saber: No se admite el acceso a fuentes de datos dinámicas como headers o cookies dentro de un ámbito de caché. Si necesita estos datos dentro de una función almacenada en caché, use headers fuera de la función almacenada en caché y pase los datos dinámicos requeridos como argumento.

Advertencia: Esta API es inestable y puede cambiar en el futuro. Proporcionaremos documentación de migración y codemods si es necesario, a medida que esta API se estabilice.

Parámetros

const data = unstable_cache(fetchData, keyParts, options)()
  • fetchData: Es una función asíncrona que obtiene los datos que desea almacenar en caché. Debe ser una función que devuelva una Promise.
  • keyParts: Es un arreglo que identifica la clave de caché. Debe contener valores globalmente únicos que juntos identifiquen la clave de los datos almacenados en caché. La clave de caché también incluye los argumentos pasados a la función.
  • options: Es un objeto que controla el comportamiento de la caché. Puede contener las siguientes propiedades:
    • tags: Un arreglo de etiquetas que se pueden usar para controlar la invalidación de la caché.
    • revalidate: El número de segundos después de los cuales la caché debe revalidarse. Omítalo o pasa false para almacenar en caché indefinidamente o hasta que se llamen los métodos coincidentes revalidateTag() o revalidatePath().

Retorna

unstable_cache retorna una función que, cuando se invoca, devuelve una Promise que se resuelve con los datos almacenados en caché. Si los datos no están en la caché, se invocará la función proporcionada y su resultado se almacenará en caché y se devolverá.

Historial de versiones

VersiónCambios
v14.0.0Se introdujo unstable_cache.