unstable_cache

unstable_cache позволяет кэшировать результаты ресурсоемких операций, таких как запросы к базе данных, и повторно использовать их между несколькими запросами.

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

Полезно знать: Доступ к динамическим источникам данных, таким как headers или cookies, внутри области кэширования не поддерживается. Если вам нужны эти данные внутри кэшированной функции, используйте headers вне кэшированной функции и передавайте требуемые динамические данные в качестве аргумента.

Предупреждение: Этот API является нестабильным и может измениться в будущем. Мы предоставим документацию по миграции и кодмоды, если это потребуется, по мере стабилизации API.

Параметры

const data = unstable_cache(fetchData, keyParts, options)()
  • fetchData: Асинхронная функция, которая получает данные для кэширования. Должна возвращать Promise.
  • keyParts: Массив, идентифицирующий ключ кэша. Должен содержать глобально уникальные значения, которые вместе идентифицируют ключ кэшируемых данных. Ключ кэша также включает аргументы, переданные в функцию.
  • options: Объект, управляющий поведением кэша. Может содержать следующие свойства:
    • tags: Массив тегов для управления инвалидацией кэша.
    • revalidate: Количество секунд, после которых кэш должен быть перевалидирован. Опустите или передайте false для бессрочного кэширования до вызова соответствующих методов revalidateTag() или revalidatePath().

Возвращаемое значение

unstable_cache возвращает функцию, которая при вызове возвращает Promise, разрешающийся в кэшированные данные. Если данные отсутствуют в кэше, будет вызвана предоставленная функция, а её результат будет закэширован и возвращён.

История версий

ВерсияИзменения
v14.0.0Добавлена функция unstable_cache.