محتويات الدورة

Next.js / المتوسط: السلطة والحداثة وتجربة المسار / الدرس 9

طبقات المخبأ التقليدية وسياسة الحداثة

حلل تخزين fetch والخرج المحضر وتنقل العميل دون خلطها بـCache Components.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • افصل حفظ الطلب وتخزين البيانات الدائم وإعادة استعمال خرج المسار.
  • اختر جمهوراً ومفتاحاً وعمراً وعقد إبطال صريحاً.

سم المخبأ والنمط قبل تشخيص القدم

يفترض الدرس cacheComponents:false. يختلف حفظ تمريرة التصيير ومخبأ fetch وخرج التحضير وحالة التنقل. قد ينفذ جلب غير مخزن دائماً أثناء التحضير ويظهر في خرج معاد استعماله، وقد يستدعي ديناميكي مساعداً مخزناً صراحة. تجنب أن كل جلب دائم أو كل افتراض غير مخزن يضمن قراءة جديدة. حدد التمثيل والجمهور والضبط قبل التغيير. لا يكفي أن ترى fetch في ملف خادم لتعرف الطبقة التي جعلت المستخدم يرى القيمة القديمة؛ تحتاج مسار إنتاجها وتوقيت إعادة استخدامها أيضاً.

خزن صراحة تمثيلاً عاماً مراجعاً فقط

يفعل الجزء force-cache لفهرس عام اصطناعي مع إعادة تحقق بستين ثانية وعلامة عامة. المدة حداثة عينة لا توصية ضبط ولا سياسة للحساب والصلاحية. تستخدم revalidate ثواني وتتوافق الخيارات؛ فلا تجمع no-store بمدة موجبة. لا يتصل المقرر بعنوان .invalid. تحقق من النسخة والنشر ولا تستنتج استمراراً من جزء غير مشغل. حتى عندما تكون البيانات عامة ينبغي أن يعرف الكاتب أي صفحات تعتمدها كي يربط الإبطال بما يتغير، بدلاً من وسم كل قيمة بعلامة شاملة يصعب تقييم أثرها.

typescript مخبأ بيانات عامة صريح توضيحي
async function publicCatalog() {
  const response=await fetch("https://catalog.example.invalid/public-courses",{
    cache:"force-cache",next:{revalidate:60,tags:["public-courses"]}
  });
  if (!response.ok) throw new Error("CATALOG_UNAVAILABLE");
  return validatePublicCatalog(await response.json());
}

الطلب مثال غير منفذ؛ يحتاج العمر والتحقق والجمهور والإبطال دمجاً فعلياً مراجعاً.

يفصل المفتاح القيم ولا يمنح الوصول

قد يختلف التمثيل بالمستأجر واللغة والمرشح ونسخة المصدر والشكل. أدرج الأبعاد اللازمة وراجع المنتج والمستهلك، ولا تضع رمزاً أو شخصياً في مفتاح يظهر بالسجل. للإطار خوارزميته وليس النموذج التعليمي نسخة منها. لا تخزن الشخصي مشتركاً لأنه خادمي، وتحتاج القيمة تفويضاً حالياً عند إرجاعها حتى مع مفتاح صحيح. تحدد هوية المخبأ أي نسختين تنفصلان تخزينياً ولا تقرر من يسمح له بطلب إحداهما، كما لا تجعل قيمة دور قديمة مناسبة لقرار إلغاء حساس.

اختبر أبعاد هوية المجال محلياً

يرمز المفتاح مصفوفة حتمية ويميز المستأجر واللغة ونسخة الشكل. هو اتفاق تسمية لا هوية Next الداخلية. لا يفتح الاختبار مخبأ أو يثبت انتهاء أو عزلاً منشوراً. قد تقيد المخازن والعلامات الطول والمحرف فاختر التوافق بقصد. قد يخلط طريق آخر البيانات إذا أغفل بُعداً رغم صحة المساعد؛ لذلك مهم البناء المشترك واختبار الطرق البديلة. يظل الرمز النصي اختباراً ضيقاً لهوية المجال ولا دليل أن منصة النشر تشارك المداخل أو تحفظها بعد إعادة تشغيل.

javascript نموذج محلي كامل لهوية المخبأ
function key(tenant,id,locale,version) {return JSON.stringify(["card",tenant,id,locale,version]);}
console.assert(key("lab-a","c1","en",1) !== key("lab-b","c1","en",1));
console.assert(key("lab-a","c1","en",1) !== key("lab-a","c1","ar",1));
console.assert(key("lab-a","c1","en",1) !== key("lab-a","c1","en",2));

ينتج كل بُعد معلن مختلف مفتاحاً آخر دون فحص مفتاح الإطار أو التخزين أو الإبطال.

راجع الإبطال والملء المتأخر والبنية معاً

يحد الانتهاء العمر ولا يضمن ترتيب معاملة؛ قد يملأ قارئ قديم بعد كتابة وإبطال. ميز الغياب والفشل قبل التخزين السلبي. تؤثر APIs الإبطال في طبقات وسياقات محددة ولا يمسح تحديث المتصفح الجميع. يحتاج تعدد المثيلات عقد مشاركة وإطلاق. يفحص المقرر المفتاح فقط لا الحفظ أو الاستمرار أو التحضير أو الوقت. تحقق ببناء وطلب مأذونين لا افتراض أن التطوير يمثل الإنتاج. قد تعيد بيئة التطوير استعمال جلب لأجل تجربة التحرير، بينما يختلف سلوك بناء حقيقي بمدخلات أو موارد لم تكن موجودة في الاختبار المحلي.

الأخطاء الشائعة وإصلاحها

يفترض أن الجلب غير المخزن يمنع إعادة خرج محضر

لماذا يحدث؟
اختلطت سياسة مخبأ الجلب بإنتاج خرج المسار وإعادة استعماله.
كيف تصلحه؟
افحص خيارات البيانات وتصيير المسار كلّاً على حدة.
كيف تتجنب تكراره؟
احتفظ بعينات وقت البناء ووقت الطلب.

تشترك بطاقات خاصة في مدخل عام

لماذا يحدث؟
غابت أبعاد الجمهور أو عومل التمثيل الخاص كبيانات عامة.
كيف تصلحه؟
صحح نطاق التمثيل وافرض سياسة الوصول الحالية.
كيف تتجنب تكراره؟
اختبر هويات مختلفة للمسار الظاهر نفسه.

يخزن انقطاع المصدر كفهرس فارغ

لماذا يحدث؟
عومل فشل المصدر كغياب مشروع للبيانات.
كيف تصلحه؟
افصل عقد الغياب عن عقد الفشل الآمن.
كيف تتجنب تكراره؟
اختبر فقد المخبأ وفراغ المصدر وفشله مستقلة.

اختبر فهمك

1. هل يعيد نموذج المفتاح تنفيذ خوارزمية مخبأ Next الداخلية؟

اعرض الحل المشروح

لا. يختبر اتفاق مجال محلياً لقيم تختلف بالمستأجر واللغة والشكل، ولـNext مفاتيح وقواعد تخزين بإصداراتها. يوضح النموذج متطلبات الجمهور ثم يفحص الدمج الحقيقي. لا يثبت المفتاح الصحيح التزام كل المستهلكين أو عزل المخبأ المنشور.

2. لماذا قد تسمح مدة قصيرة بنتيجة قديمة بعد الإبطال؟

اعرض الحل المشروح

قد تنتهي قراءة سابقة بعد الإبطال وتعيد القديم. تحد المدة بقاءه ولا تزيل السباق. راجع فحص النسخة أو الجيل حيث يلزم، ولا تصف TTL كضمان اتساق قوي.

أهم ما تعلمته

  • تحتاج طبقات المخبأ التقليدية تسمية واختباراً منفصلين.
  • الجمهور والعمر والترتيب ضمانات مختلفة.

المراجع الرسمية