4

我有一个 MERN 应用程序,其中集成了 NextJS。第一次使用 NextJS,所以请多多包涵。我最初在任何地方都使用过 SSR ( getServerSideProps)。

关键点:

  • 我有超过 150,000 个静态内容的页面,这些内容永远不会改变。
  • 每周我都会添加大约 100 个新页面。

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

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

4

1 回答 1

10

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

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

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

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

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


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

于 2021-02-03T23:04:47.473 回答