Routen-Segment-Konfiguration
Die Routen-Segment-Optionen ermöglichen es Ihnen, das Verhalten einer Page, eines Layouts oder eines Route Handlers zu konfigurieren, indem Sie die folgenden Variablen direkt exportieren:
Option | Typ | Standardwert |
---|---|---|
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 | Wird vom Deployment-Platform festgelegt |
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() {}
Wichtig zu wissen:
- Die Werte der Konfigurationsoptionen müssen derzeit statisch analysierbar sein. Beispielsweise ist
revalidate = 600
gültig, aberrevalidate = 60 * 10
nicht.
Optionen
dynamic
Ändert das dynamische Verhalten eines Layouts oder einer Seite zu vollständig statisch oder vollständig dynamisch.
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'
Wichtig zu wissen: Das neue Modell im
app
-Verzeichnis bevorzugt eine granulare Cache-Kontrolle auf Ebene derfetch
-Anfragen gegenüber dem binären Alles-oder-Nichts-Modell vongetServerSideProps
undgetStaticProps
auf Seitenebene impages
-Verzeichnis. Diedynamic
-Option ist eine Möglichkeit, sich wieder in das vorherige Modell einzuwählen, und bietet einen einfacheren Migrationspfad.
'auto'
(Standard): Die Standardoption, um so viel wie möglich zu cachen, ohne Komponenten daran zu hindern, dynamisches Verhalten zu aktivieren.'force-dynamic'
: Erzwingt dynamisches Rendering und ungecachtes Datenabrufen eines Layouts oder einer Seite, indem das Caching allerfetch
-Anfragen deaktiviert und immer revalidiert wird. Diese Option entspricht:getServerSideProps()
impages
-Verzeichnis.- Setzen der Option jeder
fetch()
-Anfrage in einem Layout oder einer Seite auf{ cache: 'no-store', next: { revalidate: 0 } }
. - Setzen der Segmentkonfiguration auf
export const fetchCache = 'force-no-store'
'error'
: Erzwingt statisches Rendering und cacht die Daten eines Layouts oder einer Seite, indem ein Fehler ausgelöst wird, wenn Komponenten dynamische Funktionen oder ungecachte Daten verwenden. Diese Option entspricht:getStaticProps()
impages
-Verzeichnis.- Setzen der Option jeder
fetch()
-Anfrage in einem Layout oder einer Seite auf{ cache: 'force-cache' }
. - Setzen der Segmentkonfiguration auf
fetchCache = 'only-cache', dynamicParams = false
. dynamic = 'error'
ändert den Standardwert vondynamicParams
vontrue
zufalse
. Sie können das dynamische Rendern von Seiten für dynamische Parameter, die nicht vongenerateStaticParams
generiert wurden, durch manuelles Setzen vondynamicParams = true
wieder aktivieren.
'force-static'
: Erzwingt statisches Rendering und cacht die Daten eines Layouts oder einer Seite, indemcookies()
,headers()
unduseSearchParams()
gezwungen werden, leere Werte zurückzugeben.
Wichtig zu wissen:
- Anleitungen zur Migration von
getServerSideProps
undgetStaticProps
zudynamic: 'force-dynamic'
unddynamic: 'error'
finden Sie im Upgrade Guide.
dynamicParams
Steuert, was passiert, wenn ein dynamisches Segment aufgerufen wird, das nicht mit generateStaticParams generiert wurde.
export const dynamicParams = true // true | false,
export const dynamicParams = true // true | false,
true
(Standard): Dynamische Segmente, die nicht ingenerateStaticParams
enthalten sind, werden bei Bedarf generiert.false
: Dynamische Segmente, die nicht ingenerateStaticParams
enthalten sind, geben einen 404-Fehler zurück.
Wichtig zu wissen:
- Diese Option ersetzt die
fallback: true | false | blocking
-Option vongetStaticPaths
impages
-Verzeichnis.- Wenn
dynamicParams = true
, verwendet das Segment Streaming Server Rendering.- Wenn
dynamic = 'error'
unddynamic = 'force-static'
verwendet werden, wird der Standardwert vondynamicParams
auffalse
geändert.
revalidate
Legt die standardmäßige Revalidierungszeit für ein Layout oder eine Seite fest. Diese Option überschreibt nicht den revalidate
-Wert, der von einzelnen fetch
-Anfragen festgelegt wird.
export const revalidate = false
// false | 'force-cache' | 0 | number
export const revalidate = false
// false | 'force-cache' | 0 | number
false
: (Standard) Die Standardheuristik, um allefetch
-Anfragen zu cachen, die ihrecache
-Option auf'force-cache'
setzen oder entdeckt werden, bevor eine dynamische Funktion verwendet wird. Semantisch äquivalent zurevalidate: Infinity
, was bedeutet, dass die Ressource praktisch unbegrenzt gecacht werden sollte. Es ist immer noch möglich, dass einzelnefetch
-Anfragencache: 'no-store'
oderrevalidate: 0
verwenden, um das Caching zu vermeiden und die Route dynamisch zu rendern. Oder setzen Sierevalidate
auf eine positive Zahl, die niedriger ist als der Standardwert der Route, um die Revalidierungsfrequenz einer Route zu erhöhen.0
: Stellt sicher, dass ein Layout oder eine Seite immer dynamisch gerendert wird, auch wenn keine dynamischen Funktionen oder ungecachte Datenabrufe entdeckt werden. Diese Option ändert den Standardwert vonfetch
-Anfragen, die keinecache
-Option auf'no-store'
setzen, lässt aberfetch
-Anfragen, die'force-cache'
oder eine positiverevalidate
verwenden, unverändert.number
: (in Sekunden) Legt die standardmäßige Revalidierungsfrequenz eines Layouts oder einer Seite aufn
Sekunden fest.
Wichtig zu wissen: Die
revalidate
-Option ist nur verfügbar, wenn die Node.js Runtime verwendet wird. Das bedeutet, dass die Verwendung derrevalidate
-Option mitruntime = 'edge'
nicht funktioniert.
Revalidierungsfrequenz
- Die niedrigste
revalidate
-Einstellung über alle Layouts und Seiten einer einzelnen Route bestimmt die Revalidierungsfrequenz der gesamten Route. Dies stellt sicher, dass untergeordnete Seiten so häufig revalidiert werden wie ihre übergeordneten Layouts. - Einzelne
fetch
-Anfragen können eine niedrigererevalidate
als die Standard-revalidate
der Route festlegen, um die Revalidierungsfrequenz der gesamten Route zu erhöhen. Dies ermöglicht es Ihnen, dynamisch eine häufigere Revalidierung für bestimmte Routen basierend auf bestimmten Kriterien zu aktivieren.
fetchCache
Dies ist eine erweiterte Option, die nur verwendet werden sollte, wenn Sie die Standardeinstellung gezielt überschreiben müssen.
Standardmäßig wird Next.js alle fetch()
-Anfragen cachen, die vor der Verwendung von dynamischen Funktionen erreichbar sind, und wird keine fetch
-Anfragen cachen, die nach der Verwendung dynamischer Funktionen entdeckt werden.
fetchCache
ermöglicht es Ihnen, die Standard-cache
-Option aller fetch
-Anfragen in einem Layout oder einer Seite zu überschreiben.
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'
(Standard)- Die Standardoption, umfetch
-Anfragen vor dynamischen Funktionen mit der von ihnen bereitgestelltencache
-Option zu cachen undfetch
-Anfragen nach dynamischen Funktionen nicht zu cachen.'default-cache'
: Erlaubt das Übergeben beliebigercache
-Optionen anfetch
, aber wenn keine Option angegeben ist, wird diecache
-Option auf'force-cache'
gesetzt. Dies bedeutet, dass sogarfetch
-Anfragen nach dynamischen Funktionen als statisch betrachtet werden.'only-cache'
: Stellt sicher, dass allefetch
-Anfragen das Caching aktivieren, indem der Standardwert aufcache: 'force-cache'
geändert wird, wenn keine Option angegeben ist, und einen Fehler auslöst, wennfetch
-Anfragencache: 'no-store'
verwenden.'force-cache'
: Stellt sicher, dass allefetch
-Anfragen das Caching aktivieren, indem diecache
-Option allerfetch
-Anfragen auf'force-cache'
gesetzt wird.'default-no-store'
: Erlaubt das Übergeben beliebigercache
-Optionen anfetch
, aber wenn keine Option angegeben ist, wird diecache
-Option auf'no-store'
gesetzt. Dies bedeutet, dass sogarfetch
-Anfragen vor dynamischen Funktionen als dynamisch betrachtet werden.'only-no-store'
: Stellt sicher, dass allefetch
-Anfragen das Caching deaktivieren, indem der Standardwert aufcache: 'no-store'
geändert wird, wenn keine Option angegeben ist, und einen Fehler auslöst, wennfetch
-Anfragencache: 'force-cache'
verwenden.'force-no-store'
: Stellt sicher, dass allefetch
-Anfragen das Caching deaktivieren, indem diecache
-Option allerfetch
-Anfragen auf'no-store'
gesetzt wird. Dies erzwingt, dass allefetch
-Anfragen bei jeder Anfrage neu abgerufen werden, selbst wenn sie eine'force-cache'
-Option angeben.
Verhalten über Routensegmente hinweg
- Alle Optionen, die über die Layouts und Seiten einer einzelnen Route hinweg festgelegt werden, müssen miteinander kompatibel sein.
- Wenn sowohl
'only-cache'
als auch'force-cache'
angegeben sind, gewinnt'force-cache'
. Wenn sowohl'only-no-store'
als auch'force-no-store'
angegeben sind, gewinnt'force-no-store'
. Die Force-Option ändert das Verhalten über die gesamte Route, sodass ein einzelnes Segment mit'force-*'
alle Fehler verhindert, die durch'only-*'
verursacht werden. - Die Absicht der
'only-*'
undforce-*'
-Optionen ist es, sicherzustellen, dass die gesamte Route entweder vollständig statisch oder vollständig dynamisch ist. Das bedeutet:- Eine Kombination von
'only-cache'
und'only-no-store'
in einer einzelnen Route ist nicht erlaubt. - Eine Kombination von
'force-cache'
und'force-no-store'
in einer einzelnen Route ist nicht erlaubt.
- Eine Kombination von
- Ein übergeordnetes Element kann nicht
'default-no-store'
angeben, wenn ein untergeordnetes Element'auto'
oder'*-cache'
angibt, da dies dazu führen könnte, dass dieselbefetch
-Anfrage unterschiedliches Verhalten zeigt.
- Wenn sowohl
- Es wird generell empfohlen, gemeinsame übergeordnete Layouts auf
'auto'
zu belassen und die Optionen dort anzupassen, wo untergeordnete Segmente abweichen.
runtime
export const runtime = 'nodejs'
// 'edge' | 'nodejs'
export const runtime = 'nodejs'
// 'edge' | 'nodejs'
nodejs
(Standard)edge
Erfahren Sie mehr über die Edge- und Node.js-Runtimes.
preferredRegion
export const preferredRegion = 'auto'
// 'auto' | 'global' | 'home' | ['iad1', 'sfo1']
export const preferredRegion = 'auto'
// 'auto' | 'global' | 'home' | ['iad1', 'sfo1']
Die Unterstützung für preferredRegion
und die unterstützten Regionen hängt von Ihrer Deployment-Plattform ab.
Wichtig zu wissen:
- Wenn keine
preferredRegion
angegeben ist, erbt sie die Option des nächstgelegenen übergeordneten Layouts.- Das Root-Layout verwendet standardmäßig
all
Regionen.
maxDuration
Abhängig von Ihrer Deployment-Plattform können Sie möglicherweise eine höhere Standard-Ausführungszeit für Ihre Funktion verwenden.
Diese Einstellung ermöglicht es Ihnen, innerhalb der Grenzen Ihres Plans eine höhere Ausführungszeit zu aktivieren.
Hinweis: Diese Einstellung erfordert Next.js 13.4.10
oder höher.
export const maxDuration = 5
export const maxDuration = 5
Wichtig zu wissen:
- Wenn keine
maxDuration
angegeben ist, hängt der Standardwert von Ihrer Deployment-Plattform und Ihrem Plan ab.
generateStaticParams
Die Funktion generateStaticParams
kann in Kombination mit dynamischen Routensegmenten verwendet werden, um die Liste der Routensegmentparameter zu definieren, die zum Build-Zeitpunkt statisch generiert werden, anstatt bei Bedarf zur Laufzeit.
Weitere Details finden Sie in der API-Referenz.