Route Segment Config
Rota Segmenti seçenekleri, aşağıdaki değişkenleri doğrudan dışa aktararak bir Sayfa, Düzen veya Rota İşleyicisinin davranışını yapılandırmanıza olanak tanır:
| Option | Type | Default |
|---|---|---|
dynamic | 'auto' | 'force-dynamic' | 'error' | 'force-static' | 'auto' |
dynamicParams | boolean | true |
revalidate | false | 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 | Set by deployment platform |
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() {}Bildiğim iyi oldu:
- Yapılandırma seçeneklerinin değerlerinin şu anda statik olarak analiz edilebilir olması gerekir. Örneğin
revalidate = 600geçerlidir, ancakrevalidate = 60 * 10geçerli değildir.
Options
dynamic
Bir düzen veya sayfanın dinamik davranışını tamamen statik veya tamamen dinamik olarak değiştirin.
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'Bilmekte fayda var:
appdizinindeki yeni model,pagesdizinindeki sayfa düzeyindegetServerSidePropsvegetStaticProps'un ikili ya hep ya hiç modeli yerinefetchistek düzeyinde ayrıntılı önbellekleme kontrolünü tercih eder.dynamicseçeneği, kolaylık sağlamak için önceki modele geri dönmenin bir yoludur ve daha basit bir geçiş yolu sağlar.
-
'auto'(varsayılan): Herhangi bir bileşenin dinamik davranışı seçmesini engellemeden mümkün olduğunca önbelleğe almak için varsayılan seçenek. -
'force-dynamic': İstek anında her kullanıcı için rotaların oluşturulmasına neden olacak dinamik oluşturmayı zorla. Bu seçenekpagesdizinindekigetServerSideProps()ile eşdeğerdir. -
'error': Herhangi bir bileşen dinamik işlevler veya önbelleğe alınmamış veriler kullanırsa bir hataya neden olarak statik oluşturmayı zorlayın ve bir düzen veya sayfanın verilerini önbelleğe alın. Bu seçenek şuna eşdeğerdir:getStaticProps()pagesdizininde.- Bir düzen veya sayfadaki her
fetch()isteğinin seçeneğini{ cache: 'force-cache' }olarak ayarlama. - Segment yapılandırmasını
fetchCache = 'only-cache', dynamicParams = falseolarak ayarlama. dynamic = 'error'dynamicParamsvarsayılanınıtrue'denfalse'ye değiştirir.generateStaticParamstarafından oluşturulmayan dinamik paramlar için sayfaları dinamik olarak oluşturmayadynamicParams = true'u manuel olarak ayarlayarak geri dönebilirsiniz.
-
'force-static': Statik oluşturmayı zorlayın ve bir düzen veya sayfanın verilerini önbelleğe alıncookies(),headers()veuseSearchParams()boş değerler döndürmek için.
Bildiğim iyi oldu:
getServerSidePropsvegetStaticPropsadreslerindendynamic: 'force-dynamic'vedynamic: 'error'adreslerine nasıl geçiş yapılacağına ilişkin talimatlar yükseltme kılavuzunda bulunabilir.
dynamicParams
generateStaticParams ile oluşturulmamış bir dinamik segment ziyaret edildiğinde ne olacağını kontrol edin.
export const dynamicParams = true // true | false,true(varsayılan):generateStaticParamsadresinde yer almayan dinamik segmentler talep üzerine oluşturulur.false:generateStaticParamsadresinde yer almayan dinamik segmentler 404 döndürür.
Bildiğim iyi oldu:
- Bu seçenek,
pagesdizinindekigetStaticPathsadresininfallback: true | false | blockingseçeneğinin yerini alır.dynamicParams = trueolduğunda, segment Akış Sunucusu Oluşturma özelliğini kullanır.- Eğer
dynamic = 'error'vedynamic = 'force-static'kullanılıyorsa,dynamicParamsvarsayılan değerinifalseolarak değiştirecektir.
revalidate
Bir düzen veya sayfa için varsayılan yeniden doğrulama süresini ayarlayın. Bu seçenek, bireysel fetch istekleri tarafından belirlenen revalidate değerini geçersiz kılmaz.
export const revalidate = false
// false | 0 | numberfalse: (varsayılan)cacheseçeneğini'force-cache'olarak ayarlayan veya dinamik bir işlev kullanılmadan önce keşfedilen tümfetchisteklerini önbelleğe almak için varsayılan sezgisel. Anlamsal olarakrevalidate: Infinityile eşdeğerdir ve kaynağın süresiz olarak önbelleğe alınması gerektiği anlamına gelir. Bireyselfetchisteklerinin önbelleğe alınmamak ve rotayı dinamik olarak oluşturmak içincache: 'no-store'veyarevalidate: 0kullanması hala mümkündür. Veya bir rotanın yeniden doğrulama sıklığını artırmak içinrevalidateadresini rota varsayılanından daha düşük bir pozitif sayıya ayarlayın.0: Dinamik işlevler veya önbelleğe alınmamış veri getirmeleri keşfedilmese bile bir düzen veya sayfanın her zaman dinamik olarak oluşturulmasını sağlayın. Bu seçenek, bircacheseçeneği belirlemeyenfetchisteklerinin varsayılanını'no-store'olarak değiştirir, ancak'force-cache'seçeneğini tercih eden veya pozitif birrevalidatekullananfetchisteklerini olduğu gibi bırakır.number: (saniye cinsinden) Bir düzen veya sayfanın varsayılan yeniden doğrulama sıklığınınsaniye olarak ayarlayın.
Bilmekte fayda var:
revalidateseçeneği yalnızca Node.js Runtime kullanıldığında kullanılabilir. Bu,revalidateseçeneğiniruntime = 'edge'ile kullanmanın işe yaramayacağı anlamına gelir.
Revalidation Frequency
- Tek bir rotanın her bir düzen ve sayfasındaki en düşük
revalidate, tüm rotanın yeniden doğrulama sıklığını belirleyecektir. Bu, alt sayfaların ana düzenleri kadar sık yeniden doğrulanmasını sağlar. - Bireysel
fetchistekleri, tüm rotanın yeniden doğrulama sıklığını artırmak için rotanın varsayılanrevalidateadresinden daha düşük birrevalidateadresi belirleyebilir. Bu, bazı kriterlere dayalı olarak belirli rotalar için daha sık yeniden doğrulamayı dinamik olarak tercih etmenize olanak tanır.
fetchCache
This is an advanced option that should only be used if you specifically need to override the default behavior.
Varsayılan olarak Next.js, herhangi bir dinamik işlev kullanılmadan önce erişilebilen fetch() isteklerini önbelleğe alır ve dinamik işlevler kullanıldıktan sonra keşfedilen fetch isteklerini önbelleğe almaz.
fetchCache bir düzen veya sayfadaki tüm fetch isteklerinin varsayılan cache seçeneğini geçersiz kılmanıza olanak tanır.
export const fetchCache = 'auto'
// 'auto' | 'default-cache' | 'only-cache'
// 'force-cache' | 'force-no-store' | 'default-no-store' | 'only-no-store''auto'(varsayılan)- Sağladıklarıcacheseçeneği ile dinamik işlevlerden öncefetchisteklerini önbelleğe almak ve dinamik işlevlerden sonrafetchisteklerini önbelleğe almamak için varsayılan seçenek.'default-cache': Herhangi bircacheseçeneğininfetchadresine aktarılmasına izin verin, ancak herhangi bir seçenek belirtilmezsecacheseçeneğini'force-cache'olarak ayarlayın. Bu, dinamik işlevlerden sonrakifetchisteklerinin bile statik olarak kabul edileceği anlamına gelir.'only-cache': Herhangi bir seçenek sağlanmamışsa varsayılanıcache: 'force-cache'olarak değiştirerek ve herhangi birfetchisteğicache: 'no-store'kullanıyorsa bir hataya neden olarak tümfetchisteklerinin önbelleğe almayı tercih etmesini sağlayın.'force-cache': Tümfetchisteklerinincacheseçeneğini'force-cache'olarak ayarlayarak tümfetchisteklerinin önbelleğe almayı tercih ettiğinden emin olun.'default-no-store': Herhangi bircacheseçeneğininfetchadresine aktarılmasına izin verin, ancak herhangi bir seçenek belirtilmezsecacheseçeneğini'no-store'olarak ayarlayın. Bu, dinamik işlevlerden öncekifetchisteklerinin bile dinamik olarak kabul edileceği anlamına gelir.'only-no-store': Herhangi bir seçenek sağlanmamışsa varsayılanıcache: 'no-store'olarak değiştirerek ve herhangi birfetchisteği kullanırsa bir hataya neden olarak tümfetchisteklerinin önbelleğe alma işleminden çıkmasını sağlayıncache: 'force-cache''force-no-store': Tümfetchisteklerinincacheseçeneğini'no-store'olarak ayarlayarak tümfetchisteklerinin önbelleklemeden çıkmasını sağlayın. Bu,'force-cache'seçeneği sağlasalar bile tümfetchisteklerini her istekte yeniden önbelleklenmeye zorlar.
Cross-route segment behavior
- Tek bir rotanın her düzeninde ve sayfasında ayarlanan tüm seçeneklerin birbiriyle uyumlu olması gerekir.
- Hem
'only-cache'hem de'force-cache'sağlanmışsa,'force-cache'kazanır. Hem'only-no-store'hem de'force-no-store'sağlanmışsa,'force-no-store'kazanır. Force seçeneği rota boyunca davranışı değiştirir, böylece'force-*'ile tek bir segment'only-*'tarafından neden olunan herhangi bir hatayı önleyecektir. 'only-*'veforce-*'seçeneklerinin amacı, tüm rotanın ya tamamen statik ya da tamamen dinamik olduğunu garanti etmektir. Bu şu anlama gelir:- Tek bir rotada
'only-cache've'only-no-store'kombinasyonuna izin verilmez. - Tek bir rotada
'force-cache've'force-no-store'kombinasyonuna izin verilmez.
- Tek bir rotada
- Bir ebeveyn, bir çocuk
'auto'veya'*-cache'sağlıyorsa'default-no-store'sağlayamaz, çünkü bu aynı getirmenin farklı bir davranışa sahip olmasına neden olabilir.
- Hem
- Genellikle paylaşılan ana düzenlerin
'auto'olarak bırakılması ve alt bölümlerin farklılaştığı yerlerde seçeneklerin özelleştirilmesi önerilir.
runtime
export const runtime = 'nodejs'
// 'edge' | 'nodejs'nodejs(varsayılan)edge
Edge ve Node.js çalışma zamanları hakkında daha fazla bilgi edinin.
preferredRegion
export const preferredRegion = 'auto'
// 'auto' | 'global' | 'home' | ['iad1', 'sfo1']preferredRegion desteği ve desteklenen bölgeler dağıtım platformunuza bağlıdır.
Bildiğim iyi oldu:
- Bir
preferredRegionbelirtilmezse, en yakın üst düzenin seçeneğini devralır.- Kök düzeni varsayılan olarak
allbölgelerine ayarlıdır.
maxDuration
Next.js varsayılan olarak sunucu tarafı mantığının yürütülmesini sınırlamaz (bir sayfa oluşturma veya bir API'yi işleme). Dağıtım platformları, belirli yürütme sınırları eklemek için Next.js derleme çıktısından maxDuration adresini kullanabilir. Örneğin, Vercel'de .
Not: Bu ayarlar Next.js 13.4.10 veya üstünü gerektirir.
export const maxDuration = 5generateStaticParams
generateStaticParams fonksiyonu dinamik rota segmentleri ile birlikte, istek zamanında isteğe bağlı olarak değil, derleme zamanında statik olarak oluşturulacak rota segmenti parametrelerinin listesini tanımlamak için kullanılabilir.
Daha fazla ayrıntı için API referansına bakın.