تكوين جزء المسار (Route Segment Config)
تتيح لك خيارات جزء المسار تكوين سلوك الصفحة أو التخطيط أو معالج المسار من خلال تصدير المتغيرات التالية مباشرة:
الخيار | النوع | الافتراضي |
---|---|---|
dynamic | 'auto' | 'force-dynamic' | 'error' | 'force-static' | 'auto' |
dynamicParams | boolean | true |
revalidate | false | 'force-cache' | 0 | number | false |
fetchCache | 'auto' | 'default-cache' | 'only-cache' | 'force-cache' | 'force-no-store' | 'default-no-store' | 'only-no-store' | 'auto' |
runtime | 'nodejs' | 'edge' | 'nodejs' |
preferredRegion | 'auto' | 'global' | 'home' | string | string[] | 'auto' |
maxDuration | number | يتم تعيينه بواسطة منصة النشر |
export const dynamic = 'auto'
export const dynamicParams = true
export const revalidate = false
export const fetchCache = 'auto'
export const runtime = 'nodejs'
export const preferredRegion = 'auto'
export const maxDuration = 5
export default function MyComponent() {}
export const dynamic = 'auto'
export const dynamicParams = true
export const revalidate = false
export const fetchCache = 'auto'
export const runtime = 'nodejs'
export const preferredRegion = 'auto'
export const maxDuration = 5
export default function MyComponent() {}
معلومة مفيدة:
- يجب أن تكون قيم خيارات التكوين قابلة للتحليل الثابت حاليًا. على سبيل المثال
revalidate = 600
صالحة، لكنrevalidate = 60 * 10
غير صالحة.
الخيارات
dynamic
تغيير السلوك الديناميكي للتخطيط أو الصفحة ليصبح ثابتًا بالكامل أو ديناميكيًا بالكامل.
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'
معلومة مفيدة: يفضل النموذج الجديد في دليل
app
التحكم الدقيق في التخزين المؤقت على مستوى طلبfetch
بدلاً من النموذج الثنائي الكلي في دليلpages
باستخدامgetServerSideProps
وgetStaticProps
على مستوى الصفحة. خيارdynamic
هو طريقة للعودة إلى النموذج السابق كتسهيل ويوفر مسار هجرة أبسط.
'auto'
(الافتراضي): الخيار الافتراضي لتخزين أكبر قدر ممكن دون منع أي مكونات من اختيار السلوك الديناميكي.'force-dynamic'
: فرض التصيير الديناميكي وجلب البيانات غير المخزنة للتخطيط أو الصفحة عن طريق تعطيل جميع التخزين المؤقت لطلباتfetch
وإعادة التحقق دائمًا. يعادل هذا الخيار:getServerSideProps()
في دليلpages
.- تعيين خيار كل طلب
fetch()
في التخطيط أو الصفحة إلى{ cache: 'no-store', next: { revalidate: 0 } }
. - تعيين تكوين الجزء إلى
export const fetchCache = 'force-no-store'
'error'
: فرض التصيير الثابت وتخزين بيانات التخطيط أو الصفحة عن طريق التسبب في خطأ إذا استخدمت أي مكونات وظائف ديناميكية أو جلب بيانات غير مخزنة. يعادل هذا الخيار:getStaticProps()
في دليلpages
.- تعيين خيار كل طلب
fetch()
في التخطيط أو الصفحة إلى{ cache: 'force-cache' }
. - تعيين تكوين الجزء إلى
fetchCache = 'only-cache', dynamicParams = false
. dynamic = 'error'
يغير الافتراضي لـdynamicParams
منtrue
إلىfalse
. يمكنك العودة إلى تصيير الصفحات ديناميكيًا للمعاملات الديناميكية غير المولدة بواسطةgenerateStaticParams
عن طريق تعيينdynamicParams = true
يدويًا.
'force-static'
: فرض التصيير الثابت وتخزين بيانات التخطيط أو الصفحة عن طريق إجبارcookies()
وheaders()
وuseSearchParams()
على إرجاع قيم فارغة.
معلومة مفيدة:
- يمكن العثور على تعليمات كيفية الهجرة من
getServerSideProps
وgetStaticProps
إلىdynamic: 'force-dynamic'
وdynamic: 'error'
في دليل الترقية.
dynamicParams
التحكم في ما يحدث عند زيارة جزء ديناميكي لم يتم توليده باستخدام generateStaticParams.
export const dynamicParams = true // true | false,
export const dynamicParams = true // true | false,
true
(الافتراضي): يتم توليد الأجزاء الديناميكية غير المضمنة في `generateStaticParams عند الطلب.false
: سترجع الأجزاء الديناميكية غير المضمنة فيgenerateStaticParams
خطأ 404.
معلومة مفيدة:
- يحل هذا الخيار محل خيار
fallback: true | false | blocking
لـgetStaticPaths
في دليلpages
.- عندما يكون
dynamicParams = true
، يستخدم الجزء تصيير الخادم المتدفق (Streaming Server Rendering).- إذا تم استخدام
dynamic = 'error'
وdynamic = 'force-static'
، فسيغير الافتراضي لـdynamicParams
إلىfalse
.
revalidate
تعيين وقت إعادة التحقق الافتراضي للتخطيط أو الصفحة. لا يتجاوز هذا الخيار قيمة revalidate
المعينة بواسطة طلبات fetch
الفردية.
export const revalidate = false
// false | 'force-cache' | 0 | number
export const revalidate = false
// false | 'force-cache' | 0 | number
false
: (الافتراضي) الإرشاد الافتراضي لتخزين أي طلباتfetch
التي تعين خيارcache
إلى'force-cache'
أو التي يتم اكتشافها قبل استخدام وظيفة ديناميكية. يعادل دلاليًاrevalidate: Infinity
مما يعني بشكل فعال أنه يجب تخزين المورد إلى أجل غير مسمى. لا يزال بإمكان طلباتfetch
الفردية استخدامcache: 'no-store'
أوrevalidate: 0
لتجنب التخزين وجعل المسار معروضًا ديناميكيًا. أو تعيينrevalidate
إلى رقم موجب أقل من الافتراضي للمسار لزيادة تكرار إعادة التحقق للمسار.0
: التأكد من أن التخطيط أو الصفحة يتم تصييره ديناميكيًا دائمًا حتى إذا لم يتم اكتشاف أي وظائف ديناميكية أو جلب بيانات غير مخزنة. يغير هذا الخيار الافتراضي لطلباتfetch
التي لا تعين خيارcache
إلى'no-store'
لكنه يترك طلباتfetch
التي تختار'force-cache'
أو تستخدمrevalidate
موجبًا كما هي.number
: (بالثواني) تعيين تكرار إعادة التحقق الافتراضي للتخطيط أو الصفحة إلىn
ثانية.
معلومة مفيدة: خيار
revalidate
متاح فقط عند استخدام وقت تشغيل Node.js. هذا يعني أن استخدام خيارrevalidate
معruntime = 'edge'
لن يعمل.
تكرار إعادة التحقق
- سيحدد أقل
revalidate
عبر كل تخطيط وصفحة لمسار واحد تكرار إعادة التحقق للمسار بالكامل. يضمن هذا إعادة التحقق من الصفحات الفرعية بنفس تكرار تخطيطاتها الأصلية. - يمكن لطلبات
fetch
الفردية تعيينrevalidate
أقل منrevalidate
الافتراضي للمسار لزيادة تكرار إعادة التحقق للمسار بالكامل. يتيح لك هذا الاختيار ديناميكيًا تكرار إعادة التحقق الأكثر تكرارًا لمسارات معينة بناءً على بعض المعايير.
fetchCache
هذا خيار متقدم يجب استخدامه فقط إذا كنت بحاجة إلى تجاوز السلوك الافتراضي.
بشكل افتراضي، سيخزن Next.js أي طلبات fetch()
يمكن الوصول إليها قبل استخدام أي وظائف ديناميكية ولن يخزن طلبات fetch
التي يتم اكتشافها بعد استخدام الوظائف الديناميكية.
يسمح لك fetchCache
بتجاوز خيار cache
الافتراضي لجميع طلبات fetch
في تخطيط أو صفحة.
export const fetchCache = 'auto'
// 'auto' | 'default-cache' | 'only-cache'
// 'force-cache' | 'force-no-store' | 'default-no-store' | 'only-no-store'
export const fetchCache = 'auto'
// 'auto' | 'default-cache' | 'only-cache'
// 'force-cache' | 'force-no-store' | 'default-no-store' | 'only-no-store'
'auto'
(الافتراضي)- الخيار الافتراضي لتخزين طلباتfetch
قبل الوظائف الديناميكية مع خيارcache
الذي توفره وعدم تخزين طلباتfetch
بعد الوظائف الديناميكية.'default-cache'
: السماح بأي خيارcache
يتم تمريره إلىfetch
ولكن إذا لم يتم توفير خيار، فسيتم تعيين خيارcache
إلى'force-cache'
. هذا يعني أنه حتى طلباتfetch
بعد الوظائف الديناميكية تعتبر ثابتة.'only-cache'
: التأكد من أن جميع طلباتfetch
تختار التخزين عن طريق تغيير الافتراضي إلىcache: 'force-cache'
إذا لم يتم توفير خيار والتسبب في خطأ إذا استخدمت أي طلباتfetch
cache: 'no-store'
.'force-cache'
: التأكد من أن جميع طلباتfetch
تختار التخزين عن طريق تعيين خيارcache
لجميع طلباتfetch
إلى'force-cache'
.'default-no-store'
: السماح بأي خيارcache
يتم تمريره إلىfetch
ولكن إذا لم يتم توفير خيار، فسيتم تعيين خيارcache
إلى'no-store'
. هذا يعني أنه حتى طلباتfetch
قبل الوظائف الديناميكية تعتبر ديناميكية.'only-no-store'
: التأكد من أن جميع طلباتfetch
تختار عدم التخزين عن طريق تغيير الافتراضي إلىcache: 'no-store'
إذا لم يتم توفير خيار والتسبب في خطأ إذا استخدمت أي طلباتfetch
cache: 'force-cache'
'force-no-store'
: التأكد من أن جميع طلباتfetch
تختار عدم التخزين عن طريق تعيين خيارcache
لجميع طلباتfetch
إلى'no-store'
. يجبر هذا جميع طلباتfetch
على إعادة الجلب في كل طلب حتى إذا قدمت خيار'force-cache'
.
سلوك أجزاء المسار المتقاطعة
- يجب أن تكون أي خيارات معينة عبر كل تخطيط وصفحة لمسار واحد متوافقة مع بعضها البعض.
- إذا تم توفير كل من
'only-cache'
و'force-cache'
، فإن'force-cache'
يفوز. إذا تم توفير كل من'only-no-store'
و'force-no-store'
، فإن'force-no-store'
يفوز. يغير خيار القوة السلوك عبر المسار بحيث يمنع جزء واحد مع'force-*'
أي أخطاء ناتجة عن'only-*'
. - الهدف من خيارات
'only-*'
وforce-*'
هو ضمان أن يكون المسار بالكامل إما ثابتًا بالكامل أو ديناميكيًا بالكامل. هذا يعني:- لا يُسمح بدمج
'only-cache'
و'only-no-store'
في مسار واحد. - لا يُسمح بدمج
'force-cache'
و'force-no-store'
في مسار واحد.
- لا يُسمح بدمج
- لا يمكن للوالد توفير
'default-no-store'
إذا كان الابن يوفر'auto'
أو'*-cache'
لأن ذلك قد يجعل نفس طلبfetch
له سلوك مختلف.
- إذا تم توفير كل من
- يُوصى عمومًا بترك التخطيطات الأصلية المشتركة كـ
'auto'
وتخصيص الخيارات حيث تختلف الأجزاء الفرعية.
runtime
export const runtime = 'nodejs'
// 'edge' | 'nodejs'
export const runtime = 'nodejs'
// 'edge' | 'nodejs'
nodejs
(الافتراضي)edge
تعرف على المزيد حول وقت تشغيل Edge و Node.js.
preferredRegion
export const preferredRegion = 'auto'
// 'auto' | 'global' | 'home' | ['iad1', 'sfo1']
export const preferredRegion = 'auto'
// 'auto' | 'global' | 'home' | ['iad1', 'sfo1']
يعتمد دعم preferredRegion
والمناطق المدعومة على منصة النشر الخاصة بك.
معلومة مفيدة:
- إذا لم يتم تحديد
preferredRegion
، فسوف يرث خيار أقرب تخطيط أب.- التخطيط الجذر يحدد افتراضيًا جميع المناطق.
maxDuration
بناءً على منصة النشر الخاصة بك، قد تتمكن من استخدام وقت تنفيذ افتراضي أعلى لوظيفتك.
يسمح لك هذا الإعداد بالاختيار لوقت تنفيذ أعلى ضمن حدود خطتك.
ملاحظة: يتطلب هذا الإعداد Next.js 13.4.10
أو أعلى.
export const maxDuration = 5
export const maxDuration = 5
معلومة مفيدة:
- إذا لم يتم تحديد
maxDuration
، فإن القيمة الافتراضية تعتمد على منصة النشر وخطتك.
generateStaticParams
يمكن استخدام الدالة generateStaticParams
بالاشتراك مع أجزاء المسار الديناميكية لتحديد قائمة معلمات جزء المسار التي سيتم توليدها ثابتًا في وقت البناء بدلاً من عند الطلب في وقت الطلب.
راجع مرجع API لمزيد من التفاصيل.