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. |