Route Segment Konfiguration
Die auf dieser Seite beschriebenen Optionen sind deaktiviert, wenn das
dynamicIO
-Flag aktiviert ist, und werden in Zukunft eingestellt.
Die Routensegment-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 |
---|---|---|
experimental_ppr | boolean | |
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 | Wird vom Deployment-Platform festgelegt |
Optionen
experimental_ppr
Aktiviert Partial Prerendering (PPR) für ein Layout oder eine Seite.
export const experimental_ppr = true
// true | false
export const experimental_ppr = true
// true | false
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'
Gut zu wissen: Das neue Modell im
app
-Verzeichnis bevorzugt eine granulare Cache-Kontrolle auf der 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 aus Bequemlichkeit wieder in das vorherige Modell einzuwählen und bietet einen einfacheren Migrationspfad.
'auto'
(Standard): Die Standardoption, um so viel wie möglich zwischenzuspeichern, ohne Komponenten daran zu hindern, dynamisches Verhalten zu aktivieren.'force-dynamic'
: Erzwingt dynamisches Rendering, was dazu führt, dass Routen für jeden Benutzer zur Anfragezeit gerendert werden. Diese Option entspricht:- 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'
- Setzen der Option jeder
'error'
: Erzwingt statisches Rendering und speichert die Daten eines Layouts oder einer Seite, indem ein Fehler ausgelöst wird, wenn Komponenten Dynamische APIs oder nicht zwischengespeicherte 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 dynamisches Rendering von Seiten für dynamische Parameter, die nicht vongenerateStaticParams
generiert wurden, manuell aktivieren, indem SiedynamicParams = true
setzen.
'force-static'
: Erzwingt statisches Rendering und speichert die Daten eines Layouts oder einer Seite, indemcookies
,headers()
unduseSearchParams()
gezwungen werden, leere Werte zurückzugeben. Es ist möglich,revalidate
,revalidatePath
oderrevalidateTag
in Seiten oder Layouts zu verwenden, die mitforce-static
gerendert wurden.
Gut 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.
Gut zu wissen:
- Diese Option ersetzt die
fallback: true | false | blocking
-Option vongetStaticPaths
impages
-Verzeichnis.- Um alle Pfade beim ersten Aufruf statisch zu rendern, müssen Sie ein leeres Array in
generateStaticParams
zurückgeben oderexport const dynamic = 'force-static'
verwenden.- Wenn
dynamicParams = true
, verwendet das Segment Streaming Server Rendering.
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 | 0 | number
export const revalidate = false
// false | 0 | number
false
(Standard): Die Standardheuristik, um allefetch
-Anfragen zwischenzuspeichern, die ihrecache
-Option auf'force-cache'
setzen oder entdeckt werden, bevor eine Dynamische API verwendet wird. Semantisch äquivalent zurevalidate: Infinity
, was bedeutet, dass die Ressource effektiv unbegrenzt zwischengespeichert werden sollte. Es ist immer noch möglich, dass einzelnefetch
-Anfragencache: 'no-store'
oderrevalidate: 0
verwenden, um nicht zwischengespeichert zu werden und die Route dynamisch rendern zu lassen. Oder setzen Sierevalidate
auf eine positive Zahl, die niedriger ist als der Standardwert der Route, um die Revalidierungshäufigkeit einer Route zu erhöhen.0
: Stellt sicher, dass ein Layout oder eine Seite immer dynamisch gerendert wird, auch wenn keine Dynamischen APIs oder nicht zwischengespeicherte 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 Revalidierungshäufigkeit eines Layouts oder einer Seite aufn
Sekunden fest.
Gut zu wissen:
- Der Revalidate-Wert muss statisch analysierbar sein. Zum Beispiel ist
revalidate = 600
gültig, aberrevalidate = 60 * 10
nicht.- Der Revalidate-Wert ist nicht verfügbar, wenn
runtime = 'edge'
verwendet wird.- In der Entwicklung werden Seiten immer bei Bedarf gerendert und nie zwischengespeichert. Dies ermöglicht es Ihnen, Änderungen sofort zu sehen, ohne auf eine Revalidierungsperiode warten zu müssen.
Revalidierungshäufigkeit
- Der niedrigste
revalidate
-Wert über jedes Layout und jede Seite einer einzelnen Route bestimmt die Revalidierungshäufigkeit der gesamten Route. Dies stellt sicher, dass untergeordnete Seiten so häufig revalidiert werden wie ihre übergeordneten Layouts. - Einzelne
fetch
-Anfragen können einen niedrigerenrevalidate
-Wert als den Standard-revalidate
-Wert der Route festlegen, um die Revalidierungshäufigkeit 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 explizit überschreiben müssen.
Standardmäßig wird Next.js alle fetch()
-Anfragen zwischenspeichern, die vor der Verwendung einer Dynamischen API erreichbar sind, und wird fetch
-Anfragen nicht zwischenspeichern, die nach der Verwendung von Dynamischen APIs 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 APIs mit der von ihnen bereitgestelltencache
-Option zwischenzuspeichern undfetch
-Anfragen nach Dynamischen APIs nicht zwischenzuspeichern.'default-cache'
: Ermöglicht das Übergeben einer beliebigencache
-Option anfetch
, aber wenn keine Option angegeben ist, wird diecache
-Option auf'force-cache'
gesetzt. Dies bedeutet, dass sogarfetch
-Anfragen nach Dynamischen APIs 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, wenn einefetch
-Anfragecache: 'no-store'
verwendet.'force-cache'
: Stellt sicher, dass allefetch
-Anfragen das Caching aktivieren, indem diecache
-Option allerfetch
-Anfragen auf'force-cache'
gesetzt wird.'default-no-store'
: Ermöglicht das Übergeben einer beliebigencache
-Option anfetch
, aber wenn keine Option angegeben ist, wird diecache
-Option auf'no-store'
gesetzt. Dies bedeutet, dass sogarfetch
-Anfragen vor Dynamischen APIs 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, wenn einefetch
-Anfragecache: 'force-cache'
verwendet.'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 jedes Layout und jede Seite einer einzelnen Route festgelegt werden, müssen miteinander kompatibel sein.
- Wenn sowohl
'only-cache'
als auch'force-cache'
angegeben werden, gewinnt'force-cache'
. Wenn sowohl'only-no-store'
als auch'force-no-store'
angegeben werden, gewinnt'force-no-store'
. Die Force-Option ändert das Verhalten über die Route hinweg, sodass ein einzelnes Segment mit'force-*'
alle durch'only-*'
verursachten Fehler verhindert. - Die Absicht der
'only-*'
- und'force-*'
-Optionen ist es, sicherzustellen, dass die gesamte Route entweder vollständig statisch oder vollständig dynamisch ist. Dies 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 derselbe Fetch unterschiedliches Verhalten aufweist.
- Wenn sowohl
- Es wird generell empfohlen, gemeinsame übergeordnete Layouts auf
'auto'
zu belassen und die Optionen dort anzupassen, wo untergeordnete Segmente abweichen.
runtime
Wir empfehlen die Verwendung der Node.js-Runtime für das Rendering Ihrer Anwendung und die Edge-Runtime für Middleware.
export const runtime = 'nodejs'
// 'nodejs' | 'edge'
export const runtime = 'nodejs'
// 'nodejs' | 'edge'
'nodejs'
(Standard)'edge'
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.
Gut 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
Standardmäßig begrenzt Next.js nicht die Ausführung von serverseitiger Logik (Rendern einer Seite oder Verarbeiten einer API).
Deployment-Plattformen können maxDuration
aus der Next.js-Build-Ausgabe verwenden, um spezifische Ausführungslimits hinzuzufügen.
Hinweis: Diese Einstellung erfordert Next.js 13.4.10
oder höher.
export const maxDuration = 5
export const maxDuration = 5
Gut zu wissen:
- Wenn Sie Server Actions verwenden, setzen Sie
maxDuration
auf Seitenebene, um das Standard-Timeout aller auf der Seite verwendeten Server Actions zu ändern.
generateStaticParams
Die Funktion generateStaticParams
kann in Kombination mit dynamischen Routensegmenten verwendet werden, um die Liste der Routensegmentparameter zu definieren, die statisch zur Build-Zeit generiert werden, anstatt bei Bedarf zur Anfragezeit.
Weitere Details finden Sie in der API-Referenz.
Versionsverlauf
Version | |
---|---|
v15.0.0-RC | export const runtime = "experimental-edge" ist veraltet. Ein Codemod ist verfügbar. |