Lang x Lang

unstable_cache

unstable_cacheは、データベースのクエリなどの高費用の操作の結果を cache し、それらを複数の Request で再利用することを可能にします。

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);
  ...
}

Good to know: headerscookies などの dynamic データソースに cache scope 内でアクセスすることはサポートされていません。キャッシュされた関数内でこのデータが必要な場合は、キャッシュされた関数の外部で headers を使用し、必要な dynamic データを引数として渡してください。

警告:この API は不安定で、将来的に変更される可能性があります。この API が安定するときに必要に応じて、移行ドキュメントと codemods を提供します。

Parameters

const data = unstable_cache(fetchData, keyParts, options)();
  • fetchData:これは、cache したいデータを取得する非同期関数です。これはPromiseを返す関数でなければなりません。
  • keyParts:これはキャッシュされたキーを識別する配列です。これは、キャッシュされたデータのキーを識別するために、全世界で一意の値を含んでいなければなりません。cache キーには、関数に渡された引数も含まれます。
  • options:これは cache の動作を制御する object です。次のプロパティを含むことができます:
    • tags:cache の無効化を制御するために使用できるタグの配列。
  • revalidate: cache が再検証されるべき秒数の number 。

Returns

unstable_cacheは、呼び出すと、キャッシュされたデータへの解決を約束する関数を返します。データが cache 内にない場合、提供された関数が呼び出され、その結果がキャッシュされて返されます。

Version History

VersionChanges
v14.0.0unstable_cache 導入されました。

当社サイトでは、Cookie を使用しています。各規約をご確認の上ご利用ください:
Cookie Policy, Privacy Policy および Terms of Use