unstable_cache

تحذير: سيتم استبدال واجهة برمجة التطبيقات هذه بـ 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 خارج الدالة المخزنة مؤقتًا ومرر البيانات الديناميكية المطلوبة كمعامل.
  • تستخدم واجهة برمجة التطبيقات هذه ذاكرة التخزين المؤقت للبيانات المدمجة في Next.js للحفاظ على النتيجة عبر الطلبات والنشرات.

المعاملات

const data = unstable_cache(fetchData, keyParts, options)()
  • fetchData: هذه دالة غير متزامنة تسترجع البيانات التي تريد تخزينها مؤقتًا. يجب أن تكون دالة تُرجع Promise.
  • keyParts: هذه مصفوفة إضافية من المفاتيح تضيف تعريفًا إضافيًا للذاكرة المؤقتة. بشكل افتراضي، تستخدم unstable_cache بالفعل المعاملات والإصدار النصي من دالتك كمفتاح تخزين مؤقت. هذا اختياري في معظم الحالات؛ الوقت الوحيد الذي تحتاج فيه إلى استخدامه هو عندما تستخدم متغيرات خارجية دون تمريرها كمعاملات. ومع ذلك، من المهم إضافة الإغلاقات المستخدمة داخل الدالة إذا لم تقم بتمريرها كمعاملات.
  • options: هذا كائن يتحكم في سلوك الذاكرة المؤقتة. يمكن أن يحتوي على الخصائص التالية:
    • tags: مصفوفة من العلامات التي يمكن استخدامها للتحكم في إبطال الذاكرة المؤقتة. لن يستخدم Next.js هذا لتحديد الدالة بشكل فريد.
    • revalidate: عدد الثواني التي بعدها يجب إعادة التحقق من صحة الذاكرة المؤقتة. احذف أو مرر false للتخزين المؤقت إلى أجل غير مسمى أو حتى يتم استدعاء طرق revalidateTag() أو revalidatePath() المطابقة.

القيم المُرجعة

تُرجع unstable_cache دالة عند استدعائها، تُرجع Promise يحل إلى البيانات المخزنة مؤقتًا. إذا لم تكن البيانات في الذاكرة المؤقتة، سيتم استدعاء الدالة المقدمة، وسيتم تخزين نتيجتها مؤقتًا وإرجاعها.

مثال

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], // إضافة معرف المستخدم إلى مفتاح الذاكرة المؤقتة
    {
      tags: ['users'],
      revalidate: 60,
    }
  )

  //...
}
import { unstable_cache } from 'next/cache';

export default async function Page({ params } }) {
  const { userId } = await params
  const getCachedUser = unstable_cache(
    async () => {
      return { id: userId };
    },
    [userId], // إضافة معرف المستخدم إلى مفتاح الذاكرة المؤقتة
    {
      tags: ["users"],
      revalidate: 60,
    }
  );

  //...
}

سجل الإصدارات

الإصدارالتغييرات
v14.0.0تم تقديم unstable_cache.