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

How to add new pages without rebuilding an app with +150k static pages?

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

要点:

我想这里的理想情况是使用 getStaticPropsgetStaticPaths,并且在初始构建这 150k 页面之后,每周只构建新添加的页面并保留我已有的页面照原样建造,因为它永远不会改变。

我怎样才能做到这一点?我应该在这里使用 revalidate 吗?我一直在文档中阅读它,但我并不完全理解它。

这可以通过 getStaticProps/getStaticPaths 实现。您必须在 getStaticPaths.

中使用 fallback: true or fallback: 'blocking'

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

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

在这两种情况下,页面都会添加到预呈现页面列表中。对同一路径的后续请求将服务于预生成的页面。

next export 不支持这些选项,以防您依赖它。


请注意,revalidategetStaticProps 中用于 Incremental Static Regeneration - 在您想要更新现有的、生成的页面的情况下。既然你提到生成的页面永远不会改变,那么就没有必要使用 revalidate.