Route-Segment-Konfiguration
Die auf dieser Seite beschriebenen Optionen sind deaktiviert, wenn das
dynamicIO
-Flag aktiviert ist und werden in Zukunft vollständig veraltet sein.
Die Route-Segment-Optionen ermöglichen es Ihnen, das Verhalten einer Seite, eines Layouts oder eines Route-Handlers zu konfigurieren, indem Sie die folgenden Variablen direkt exportieren:
Option | Typ | Standard |
---|---|---|
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 | Vom Bereitstellungsplattform festgelegt |
Optionen
experimental_ppr
Aktivieren Sie Partial Prerendering (PPR) für ein Layout oder eine Seite.
dynamic
Ändern Sie das dynamische Verhalten eines Layouts oder einer Seite zu vollständig statisch oder vollständig dynamisch.
Hinweis: Das neue Modell im
app
-Verzeichnis bevorzugt eine granulare Caching-Kontrolle auf Ebene derfetch
-Anfrage gegenüber dem binären Alles-oder-Nichts-Modell vongetServerSideProps
undgetStaticProps
auf Seitenebene impages
-Verzeichnis. Diedynamic
-Option ist eine Möglichkeit, zurück zum vorherigen Modell zu wechseln und bietet einen einfacheren Migrationspfad.
-
'auto'
(Standard): Die Standardoption, um so viel wie möglich zu cachen, ohne dass Komponenten am dynamischen Verhalten gehindert werden. -
'force-dynamic'
: Erzwingen Sie dynamisches Rendering, was dazu führt, dass Routen für jeden Benutzer zum Zeitpunkt der Anfrage gerendert werden. Diese Option ist äquivalent zu: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'
: Erzwingen Sie statisches Rendering und Caching der Daten eines Layouts oder einer Seite, indem ein Fehler ausgelöst wird, wenn Komponenten Dynamische APIs oder nicht zwischengespeicherte Daten verwenden. Diese Option ist äquivalent zu: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 Standard vondynamicParams
vontrue
zufalse
. Sie können dynamisch gerenderte Seiten für dynamische Parameter, die nicht vongenerateStaticParams
generiert wurden, wieder aktivieren, indem Sie manuelldynamicParams = true
setzen.
-
'force-static'
: Erzwingen Sie statisches Rendering und Caching der Daten eines Layouts oder einer Seite, indemcookies
,headers()
unduseSearchParams()
gezwungen werden, leere Werte zurückzugeben.
Hinweis:
- Anweisungen zum Migrieren von
getServerSideProps
undgetStaticProps
zudynamic: 'force-dynamic'
unddynamic: 'error'
finden Sie im Upgrade-Leitfaden.
dynamicParams
Steuern Sie, was passiert, wenn ein dynamisches Segment besucht wird, das nicht mit generateStaticParams generiert wurde.
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.
Hinweis:
- Diese Option ersetzt die
fallback: true | false | blocking
-Option vongetStaticPaths
impages
-Verzeichnis.- Um alle Pfade beim ersten Besuch statisch zu rendern, müssen Sie ein leeres Array in
generateStaticParams
zurückgeben oderexport const dynamic = 'force-static'
verwenden.- Wenn
dynamicParams = true
ist, verwendet das Segment Streaming-Server-Rendering.- Wenn
dynamic = 'error'
unddynamic = 'force-static'
verwendet werden, ändert dies den Standard vondynamicParams
zufalse
.
revalidate
Legen Sie die standardmäßige Revalidierungszeit für ein Layout oder eine Seite fest. Diese Option überschreibt nicht den revalidate
-Wert einzelner fetch
-Anfragen.
false
(Standard): Die Standard-Heuristik zum Zwischenspeichern von beliebigenfetch
-Anfragen, die ihrecache
-Option auf'force-cache'
setzen oder vor Verwendung einer Dynamischen API entdeckt werden. Semantisch gleichwertig mitrevalidate: Infinity
, was effektiv bedeutet, dass die Ressource unbegrenzt zwischengespeichert werden soll. Es ist dennoch möglich, dass einzelnefetch
-Anfragencache: 'no-store'
oderrevalidate: 0
verwenden, um nicht zwischengespeichert zu werden und die Route dynamisch zu rendern. Oderrevalidate
auf eine positive Zahl unterhalb des Routen-Standards setzen, um die Revalidierungshäufigkeit einer Route zu erhöhen.0
: Sicherstellen, 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 Standard vonfetch
-Anfragen, die keinecache
-Option setzen, auf'no-store'
, lässt aberfetch
-Anfragen, die sich für'force-cache'
entscheiden oder eine positiverevalidate
-Option verwenden, unverändert.Zahl
: (in Sekunden) Die Standard-Revalidierungshäufigkeit eines Layouts oder einer Seite aufn
Sekunden festlegen.
Hinweis:
- Der Revalidierungswert muss statisch analysierbar sein. Beispielsweise ist
revalidate = 600
gültig, aberrevalidate = 60 * 10
nicht.- Der Revalidierungswert ist nicht verfügbar bei Verwendung von
runtime = 'edge'
.- In der Entwicklung werden Seiten immer bei Bedarf gerendert und niemals zwischengespeichert. Dies ermöglicht es Ihnen, Änderungen sofort zu sehen, ohne auf das Ablaufen einer 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 genauso häufig revalidiert werden wie ihre übergeordneten Layouts. - Einzelne
fetch
-Anfragen können einen niedrigerenrevalidate
-Wert als den Standard-revalidate
der Route setzen, um die Revalidierungshäufigkeit der gesamten Route zu erhöhen. Dies ermöglicht es Ihnen, sich dynamisch für eine häufigere Revalidierung bestimmter Routen basierend auf bestimmten Kriterien zu entscheiden.
fetchCache
Dies ist eine erweiterte Option, die nur verwendet werden sollte, wenn Sie das Standardverhalten speziell überschreiben müssen.
Standardmäßig wird Next.js alle fetch()
-Anfragen zwischenspeichern, die vor der Verwendung von Dynamischen APIs erreichbar sind, und wird fetch
-Anfragen, die nach der Verwendung von Dynamischen APIs entdeckt werden, nicht zwischenspeichern.
fetchCache
ermöglicht es Ihnen, die Standard-cache
-Option aller fetch
-Anfragen in einem Layout oder einer Seite zu überschreiben.
'auto'
(Standard): Die Standardoption zum Zwischenspeichern vonfetch
-Anfragen vor Dynamischen APIs mit der von ihnen bereitgestelltencache
-Option und Nicht-Zwischenspeichern vonfetch
-Anfragen nach Dynamischen APIs.'default-cache'
: Jedecache
-Option fürfetch
zulassen, aber wenn keine Option angegeben wird, diecache
-Option auf'force-cache'
setzen. Das bedeutet, dass auchfetch
-Anfragen nach Dynamischen APIs als statisch betrachtet werden.'only-cache'
: Sicherstellen, dass sich allefetch
-Anfragen für das Zwischenspeichern entscheiden, indem der Standard aufcache: 'force-cache'
gesetzt wird, wenn keine Option angegeben wird, und einen Fehler verursachen, wennfetch
-Anfragencache: 'no-store'
verwenden.'force-cache'
: Sicherstellen, dass sich allefetch
-Anfragen für das Zwischenspeichern entscheiden, indem diecache
-Option allerfetch
-Anfragen auf'force-cache'
gesetzt wird.'default-no-store'
: Jedecache
-Option fürfetch
zulassen, aber wenn keine Option angegeben wird, diecache
-Option auf'no-store'
setzen. Das bedeutet, dass auchfetch
-Anfragen vor Dynamischen APIs als dynamisch betrachtet werden.'only-no-store'
: Sicherstellen, dass sich allefetch
-Anfragen gegen das Zwischenspeichern entscheiden, indem der Standard aufcache: 'no-store'
gesetzt wird, wenn keine Option angegeben wird, und einen Fehler verursachen, wennfetch
-Anfragencache: 'force-cache'
verwenden.'force-no-store'
: Sicherstellen, dass sich allefetch
-Anfragen gegen das Zwischenspeichern entscheiden, indem diecache
-Option allerfetch
-Anfragen auf'no-store'
gesetzt wird. Dies erzwingt, dass allefetch
-Anfragen bei jeder Anfrage neu abgerufen werden, auch wenn sie eine'force-cache'
-Option bereitstellen.
Segmentübergreifendes Verhalten
- 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, sodass ein einzelnes Segment mit'force-*'
Fehler verhindern würde, die durch'only-*'
verursacht werden. - Die Absicht der
'only-*'
- und'force-*'
-Optionen ist es, zu garantieren, 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 derselbe Fetch ein unterschiedliches Verhalten hat.
- Wenn sowohl
- Es wird generell empfohlen, gemeinsam genutzte übergeordnete Layouts als
'auto'
zu belassen und die Optionen anzupassen, wenn untergeordnete Segmente abweichen.
runtime
Wir empfehlen die Verwendung der Node.js-Laufzeit zum Rendern Ihrer Anwendung und der Edge-Laufzeit für Middleware (einzige unterstützte Option).
'nodejs'
(Standard)'edge'
Weitere Informationen über die verschiedenen Laufzeiten.
preferredRegion
Unterstützung für preferredRegion
und unterstützte Regionen hängen von Ihrer Bereitstellungsplattform ab.
Hinweis:
- Wenn keine
preferredRegion
angegeben wird, erbt sie die Option des nächstgelegenen übergeordneten Layouts.- Das Root-Layout verwendet standardmäßig alle Regionen.
maxDuration
Standardmäßig begrenzt Next.js die Ausführung von serverseitiger Logik nicht (Rendern einer Seite oder Handhabung einer API).
Bereitstellungsplattformen können maxDuration
aus der Next.js-Build-Ausgabe verwenden, um spezifische Ausführungsgrenzen hinzuzufügen.
Zum Beispiel auf Vercel.
Hinweis: Diese Einstellung erfordert Next.js 13.4.10
oder höher.
Hinweis:
- Bei Verwendung von Server-Aktionen kann die
maxDuration
auf Seitenebene festgelegt werden, um das Standardzeitlimit aller auf der Seite verwendeten Server-Aktionen zu ändern.
generateStaticParams
Die generateStaticParams
-Funktion kann in Kombination mit dynamischen Routensegmenten verwendet werden, um die Liste der Routensegment-Parameter zu definieren, die zur Bauzeit statisch generiert werden sollen, anstatt bei Bedarf zum Zeitpunkt der Anfrage.
Weitere Details finden Sie in der API-Referenz.
Versionsverlauf
Version | |
---|---|
v15.0.0-RC | export const runtime = "experimental-edge" veraltet. Ein Codemod ist verfügbar. |