🌐

Next.js の build 時に重複した HTTP リクエストが飛ぶのを防ぐ

2024/04/28に公開

Next.js には Request Memoization という仕組みがあり、fetch が自動的にメモ化 (memoize) されて重複リクエストが行われないようになっている。

https://nextjs.org/docs/app/building-your-application/caching#request-memoization

ただし、同じ HTTP リクエストが含まれる複数の SSG のページを build したときは、並列して SSG が行われる都合のためか、重複したリクエストが飛んでしまう。

build 時に重複した HTTP リクエストが飛ぶことを防ぎたい場合は next.config.js に以下の設定を入れると、build 処理がシングルスレッドになり、期待通りに fetch がメモ化される。

ただし、設定名の通りこれは実験的 (experimental) な機能である。

const nextConfig = {
  experimental: {
    workerThreads: false,
    cpus: 1
  },
}

https://github.com/vercel/next.js/discussions/18550#discussioncomment-3284668

Discussion