unstable_cache
https://nextjs.org/docs/app/api-reference/functions/unstable_cache
warning.icon Next 15 時点でも不安定な機能なので、名前や使い方が変わるかも
fetch 以外でも Data Cache の作成を可能にする関数
fetch 以外
e.g. Prisma Client
負荷の高いデータベースクエリなどの結果をキャッシュし、複数のリクエスト間で再利用可能にする
code:ts
import { unstable_cache } from "next/cache";
const data = unstable_cache(fetchData, keyParts, options)();
引数
fetchData: キャッシュされるデータを取得するための非同期関数
keyParts: キャッシュを一意に識別するためのキーとして用いられる文字列の配列
options: キャッシュの動作を制御するオブジェクト
On-demand Revalidation に用いられる tags や Time-base Revalidation に用いられる revalidate を指定できる
e.g.
code:tsx
import { unstable_cache } from 'next/cache';
export default async function Page({ params }: { params: { userID: string } }) {
const getCachedUser = unstable_cache(
async () => {
return { id: params.userID };
},
params.userID,
{
tags: "cached-user-tag",
revalidate: 60,
}
);
...
}
React.cache とは異なり、コンポーネント内で利用可能
#Next.js