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 введена. |
© 2024 Vercel, Inc.
Licensed under the MIT License.
https://nextjs.org/docs/app/api-reference/functions/unstable_cache