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

須知: 不支援在快取範圍內存取動態資料來源,例如 headerscookies。若需在快取函式中使用此類資料,請在快取函式外部使用 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

On this page