تخطَّ إلى المحتوى

revalidateTag()

إبطال التخزين المؤقّت حسب الوسم revalidateTag()

تُعلِّم كل البيانات الموسومة بوسم معيّن أنها قديمة (stale)، فتُحدَّث بالخلفية بالزيارة القادمة لأي صفحة تستخدمها.

الوسوم تُضاف إما بخيار fetch(url, { next: { tags: ['posts'] } }) أو بدالة cacheTag جوّه نطاق 'use cache'. بعدها revalidateTag('posts', 'max') يبطل كل البيانات الموسومة بـ posts دفعة وحدة، بغض النظر أي صفحة استخدمتها.

مرّر 'max' كوسيط ثانٍ دايمًا — يعطي سلوك stale-while-revalidate (يعرض المخزَّن مؤقتًا ريثما يحدَّث بالخلفية). الشكل القديم بوسيط واحد فقط صار مهجورًا (deprecated).

الصياغة

revalidateTag(tag: string, profile: string | { expire?: number }): void

📄 مثال

'use server';

import { revalidateTag } from 'next/cache';

export async function addPost() {
  await saveNewPost();
  revalidateTag('posts', 'max');
}

أهم النقاط

العنصرالوظيفة
tagنص الوسم، أقل من 256 حرف
profile'max' الموصى فيه (stale-while-revalidate)، أو بروفايل cacheLife مخصّص آخر

💡 نصائح عملية

  • مرّر 'max' كوسيط ثانٍ دايمًا — الشكل بوسيط واحد فقط صار قديمًا
  • لو تحتاج تحديث فوري لقراءة المستخدم نفسه بعد كتابته مباشرة (read-your-own-writes)، استخدم updateTag بدلها

⚠️ أخطاء شائعة

  • استدعاؤها من مكوّن عميل — تعمل فقط جوّه Server Functions وRoute Handlers
  • توقّع تحديث فوري لكل الصفحات فورًا — الإبطال يصير بالزيارة القادمة لكل صفحة، مو لحظيًا للجميع بنفس الوقت

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار NEXTJS الكامل بالعربي.