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 . |