unstable_cache
警告: このAPIは、安定版になった際に
use 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は、Next.js の組み込み データキャッシュ を使用して、リクエストやデプロイメント間で結果を永続化します。
Parameters
const data = unstable_cache(fetchData, keyParts, options)()fetchData: キャッシュしたいデータを取得する非同期関数です。Promiseを返す関数である必要があります。keyParts: キャッシュの識別をさらに追加するためのキーの追加配列です。デフォルトでは、unstable_cacheはすでに引数と関数の文字列化されたバージョンをキャッシュキーとして使用しています。ほとんどの場合、これはオプションです。使用する必要があるのは、外部変数をパラメータとして渡さずに使用する場合のみです。ただし、関数内で使用されるクロージャをパラメータとして渡さない場合は、それらを追加することが重要です。options: キャッシュの動作を制御するオブジェクトです。以下のプロパティを含むことができます。tags: キャッシュの無効化を制御するために使用できるタグの配列です。Next.js は、関数を固有に識別するためにこれを使用しません。revalidate: キャッシュを再検証するまでの秒数です。無期限にキャッシュするか、一致するrevalidateTag()またはrevalidatePath()メソッドが呼び出されるまでキャッシュするには、省略するかfalseを渡してください。
戻り値
unstable_cache は、呼び出されると Promise を返し、キャッシュされたデータに解決する関数を返します。データがキャッシュにない場合、指定された関数が呼び出され、その結果がキャッシュされて返されます。
例
app/page.tsx
import { unstable_cache } from 'next/cache'
export default async function Page({
params,
}: {
params: Promise<{ userId: string }>
}) {
const { userId } = await params
const getCachedUser = unstable_cache(
async () => {
return { id: userId }
},
[userId], // add the user ID to the cache key
{
tags: ['users'],
revalidate: 60,
}
)
//...
}バージョン履歴
| バージョン | 変更履歴 |
|---|---|
v14.0.0 | unstable_cache が導入されました。 |
役に立ちましたか?