getStaticPaths
ページが動的ルートを持ち、getStaticProps
を使用する場合、静的に生成されるパスのリストを定義する必要があります。
動的ルートを使用するページからgetStaticPaths
(静的サイト生成)という関数をエクスポートすると、Next.jsはgetStaticPaths
で指定されたすべてのパスを静的にプリレンダリングします。
getStaticPaths
APIリファレンスでは、getStaticPaths
で使用できるすべてのパラメータとプロパティを解説しています。
getStaticPathsをいつ使用すべきか
以下の場合にgetStaticPaths
を使用する必要があります:
- ヘッドレスCMSからデータが取得される
- データベースからデータが取得される
- ファイルシステムからデータが取得される
- データが公開キャッシュ可能(ユーザー固有ではない)
- ページをプリレンダリングする必要がある(SEOのため)で、非常に高速である —
getStaticProps
はHTML
とJSON
ファイルを生成し、どちらもパフォーマンスのためにCDNでキャッシュ可能
getStaticPathsはいつ実行されるか
getStaticPaths
は本番環境でのビルド時にのみ実行され、ランタイム時には呼び出されません。getStaticPaths
内に記述されたコードがクライアントサイドのバンドルから削除されていることは、このツールで検証できます。
getStaticPropsはgetStaticPathsとどのように連携するか
getStaticProps
はビルド時に返された任意のpaths
に対してnext build
中に実行されますgetStaticProps
はfallback: true
を使用する際にバックグラウンドで実行されますgetStaticProps
はfallback: blocking
を使用する際の初期レンダリング前に呼び出されます
どこでgetStaticPathsを使用できるか
getStaticPaths
はgetStaticProps
と必ず一緒に使用する必要がありますgetStaticPaths
はgetServerSideProps
と一緒に使用できませんgetStaticProps
を使用する動的ルートからgetStaticPaths
をエクスポートできます- 非ページファイル(例:
components
フォルダ)からgetStaticPaths
をエクスポートできません getStaticPaths
はページコンポーネントのプロパティとしてではなく、スタンドアロン関数としてエクスポートする必要があります
開発時に毎回リクエストで実行
開発環境(next dev
)では、getStaticPaths
は毎回のリクエストで呼び出されます。
パスのオンデマンド生成
getStaticPaths
を使用すると、fallback
によってオンデマンドではなく、ビルド中に生成されるページを制御できます。ビルド中により多くのページを生成するとビルドが遅くなります。
paths
に空の配列を返すことで、すべてのページのオンデマンド生成を延期できます。これは、Next.jsアプリケーションを複数の環境にデプロイする際に特に役立ちます。例えば、プレビュー用にすべてのページをオンデマンドで生成することで、より高速なビルドを実現できます(本番ビルドは除く)。これは、数百または数千の静的ページを持つサイトに役立ちます。