如何在不重建具有+150k静态页面的应用程序的情况下添加新页面?

bar*_*el0 11 next.js static-site-generation

我有一个 MERN 应用程序,其中集成了 NextJS。第一次使用 NextJS,请耐心等待。我最初在任何地方都使用过 SSR ( getServerSideProps)。

关键点:

  • 我有超过 150,000 个页面,其中包含永远不会更改的静态内容。
  • 每周我都会添加大约 100 个新页面。

我想这里的理想情况是使用getStaticPropsand getStaticPathsand ,在初始构建这 150k 页面之后,每周构建新添加的页面并保持我已经构建的内容不变,因为它永远不会改变。

我怎样才能实现这个目标?我应该revalidate在这里使用吗?我一直在文档中阅读有关它的内容,但我并不完全理解它。

jul*_*ves 15

getStaticProps这可以通过/来实现getStaticPaths。您必须在 中使用fallback: trueorfallback: 'blocking'getStaticPaths

如果fallback: true构建时未生成路径,则将在第一个请求时提供后备页面,而 Next.js 静态生成页面。完成此操作后,页面将从后备页面交换到实际的完整页面。

使用 时fallback: 'blocking',构建时未生成的路径将等待 Next.js 生成 HTML,然后在完成后提供页面。与 不同的是fallback: true,由于没有后备,渲染会被阻止,直到生成页面,这与服务器端渲染期间发生的情况类似。

在这两种情况下,页面都会添加到预渲染页面列表中。对同一路径的后续请求将提供预先生成的页面。

next export如果您依赖的话,这两个选项都不被支持。


请注意,revalidate它用于getStaticProps增量静态重新生成- 如果您想要更新现有的生成页面。既然您提到生成的页面永远不会改变,那么就没有必要使用revalidate.

  • 谢谢!我通过重新验证误导了后备。我将仅在列出这 150k 静态页面的页面中使用 getStaticProps + revalidate,因为该列表每周都会发生变化。 (2认同)