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 が導入されました。 |