Route Segment Config
このページで説明されているオプションは、
dynamicIO
フラグがオンの場合は無効になり、将来的には廃止予定です。
ルートセグメントオプションを使用すると、次の変数を直接エクスポートする ことで、Page、Layout、またはルートハンドラーの動作を設定できます:
オプション | タイプ | デフォルト |
---|---|---|
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 | デプロイプラットフォームで設定 |
オプション
experimental_ppr
レイアウトまたはページのために部分的プレレンダリング (PPR)を有効にします。
- TypeScript
- JavaScript
export const experimental_ppr = true
// true | false
export const experimental_ppr = true
// true | false
dynamic
レイアウトまたはページの動的動作を完全に静的または完全に動的に変更します。
- TypeScript
- JavaScript
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'
Good to know:
app
ディレクトリ内の新しいモデルは、pages
ディレクトリのページレベルのgetServerSideProps
およびgetStaticProps
のバイナリ全か無かのモデルよりも、fetch
リクエストレベルでの細かいキャッシング制御を優先します。dynamic
オプションは以前のモデルに便利な方法で戻る手段であり、簡単な移行経路を提供します。
-
'auto'
(デフォルト):最大限にキャッシュしつつ、どのコンポーネントも動的動作にオプトインするのを妨げずにキャッシュするためのデフォルトオプション。 -
'force-dynamic'
:動的レンダリングを強制し、各ユーザーに対してリクエスト時にルートがレンダリングされます。このオプションは次の操作と同等です:pages
ディレクトリのgetServerSideProps()
。- レイアウトまたはページ内のすべての
fetch()
リクエストに{ cache: 'no-store', next: { revalidate: 0 } }
のオプションを設定する。 - セグメント設定を
export const fetchCache = 'force-no-store'
に設定する。
-
'error'
:動的APIやキャッシュされていないデータを使用するコンポーネントがエラーを 引き起こした場合、レイアウトやページのデータを静的にレンダリングし、キャッシュします。このオプションは次の操作と同等です:pages
ディレクトリのgetStaticProps()
。- レイアウトまたはページ内のすべての
fetch()
リクエストに{ cache: 'force-cache' }
のオプションを設定する。 - セグメント設定を
fetchCache = 'only-cache', dynamicParams = false
に設定する。 dynamic = 'error'
は、dynamicParams
のデフォルトをtrue
からfalse
に変更します。generateStaticParams
によって生成されない動的パラメータのために、ページを動的にレンダリングするように戻すには、dynamicParams = true
を手動で設定することができます。
-
'force-static'
:静的にレンダリングし、cookies
、headers()
、およびuseSearchParams()
を強制的に空の値を返すようにして、レイアウトまたはページのデータをキャッシュします。
Good to know:
getServerSideProps
やgetStaticProps
からdynamic: 'force-dynamic'
やdynamic: 'error'
への移行方法については、アップグレードガイドにあります。
dynamicParams
generateStaticParamsで生成されなかった動的セグメントが訪問されたときに何が起こるかを制御します。
- TypeScript
- JavaScript
export const dynamicParams = true // true | false,
export const dynamicParams = true // true | false,
true
(デフォルト):generateStaticParams
に含まれていない動的セグメントがオンデマンドで生成されます。false
:generateStaticParams
に含まれていない動的セグメントは404を返します。
Good to know:
- このオプションは、
pages
ディレクトリ内のgetStaticPaths
のfallback: true | false | blocking
オプションを置き換えます。- 最初に訪問されたすべてのパスを静的にレンダリングするには、
generateStaticParams
で空の配列を返すか、export const dynamic = 'force-static'
を利用する必要があります。dynamicParams = true
の場合、セグメントはストリーミングサーバーレンダリングを使用します。dynamic = 'error'
およびdynamic = 'force-static'
が使用されている場合、dynamicParams
の既定値をfalse
に変更します。
revalidate
レイアウトまたはページのデフォルトの再検証時間を設定します。このオプションは、個々のfetch
リクエストによって設定されたrevalidate
値をオーバーライドしません。
- TypeScript
- JavaScript
export const revalidate = false
// false | 0 | number
export const revalidate = false
// false | 0 | number
false
(デフォルト):cache
オプションを'force-cache'
に設定するfetch
リクエストまたは動的APIが使用される前に発見されたfetch
リクエストをキャッシュするためのデフォルトのヒューリスティックです。これは意味的にrevalidate: Infinity
と同等であり、リ ソースが無期限にキャッシュされることを意味します。ただし、個々のfetch
リクエストがcache: 'no-store'
やrevalidate: 0
を使用してキャッシュされないようにし、ルートを動的にレンダリングすることも可能です。または、ルートのデフォルトより低い正の数を持つrevalidate
を設定して、ルートの再検証頻度を上げることもできます。0
:動的APIやキャッシュされていないデータのフェッチが見つからなかった場合でも、レイアウトやページが常に動的にレンダリングされるようにします。このオプションは、fetch
リクエストがcache
オプションを設定していない場合でもデフォルトを'no-store'
に変更しますが、force-cache
にオプトインするか、正のrevalidate
を使用するfetch
リクエストはそのままです。number
:(秒単位) レイアウトまたはページのデフォルトの再検証頻度をn
秒に設定します。
Good to know:
- 再検証値は静的に解析可能である必要があります。たとえば、
revalidate = 600
は有効ですが、revalidate = 60 * 10
は無効です。runtime = 'edge'
を使用している場合、再検証値は使用できません。- 開発中は、ページは常にオンデマンドでレンダリングされ、キャッシュされません。これにより、再検証期間を待たずに即座に変更を確認できます。
再検証頻度
- 単一路線の各レイアウトとページの最小の
revalidate
が全体のルートの再検証頻度を決定します。これにより、子ページが親レイアウトと同じ頻度で再検証されることが保証されます。 - 個々の
fetch
リクエストがルートのデフォルトのrevalidate
より低いrevalidate
を設定して、特定の条件に基づいて特定のルートの再検証頻度を動的に高めることができます。
fetchCache
これは特定の目的でデフォルト動作を上書きする必要がある場合にのみ使用すべき高度なオプションです。
デフォルトでは、Next.jsは、動的APIが使用される前に到達可能なfetch()
リクエストをキャッシュし、動的APIが使用された後に発見されたfetch
リクエストをキャッシュしません。
fetchCache
は、レイアウトまたはページ内のすべてのfetch
リクエストのデフォルトのcache
オプションを上書きすることを可能にします。
- TypeScript
- JavaScript
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'
(デフォルト):動的APIの前にfetch
リクエストをキャッシュし、彼らが提供するcache
オプションで動的APIの後のfetch
リクエストをキャッシュしないデフォルトオプション。'default-cache'
:fetch
に任意のcache
オプションを渡すことを許可しますが、オプションが提供されていない場合はcache
オプションを'force-cache'
に設定します。これにより、動的APIの後のfetch
リクエストも静的に考慮されます。'only-cache'
:fetch
リクエストがcache: 'force-cache'
を使用しない場合、デフォルトをcache: 'force-cache'
に変更し、エラーが発生するようにすることで、すべてのfetch
リクエストがキャッシュにオプトインすることを保証します。'force-cache'
:fetch
リクエストのcache
オプションをすべて'force-cache'
に設定することで、すべてのfetch
リクエストがキャッシュにオプトインすることを保証します。'default-no-store'
:fetch
に任意のcache
オプションを渡すことを許可しますが、オプションが提供されていない場合はcache