如何在不重建具有 +150k 静态页面的应用程序的情况下添加新页面?
How to add new pages without rebuilding an app with +150k static pages?
我有一个 MERN 应用程序,其中集成了 NextJS。第一次使用 NextJS,请耐心等待。我最初到处都使用 SSR (getServerSideProps
)。
要点:
- 我有超过 150,000 个页面包含永远不会更改的静态内容。
- 每周我都会添加大约 +100 个新页面。
我想这里的理想情况是使用 getStaticProps
和 getStaticPaths
,并且在初始构建这 150k 页面之后,每周只构建新添加的页面并保留我已有的页面照原样建造,因为它永远不会改变。
我怎样才能做到这一点?我应该在这里使用 revalidate
吗?我一直在文档中阅读它,但我并不完全理解它。
这可以通过 getStaticProps
/getStaticPaths
实现。您必须在 getStaticPaths
.
中使用 fallback: true
or fallback: 'blocking'
使用 fallback: true
,在构建时未生成的路径将在第一个请求时提供后备页面,而 Next.js 静态生成页面。完成此操作后,页面将从后备页面交换到实际的完整页面。
使用 fallback: 'blocking'
,在构建时未生成的路径将等待 HTML 由 Next.js 生成,然后在完成后提供页面。与 fallback: true
不同的是,由于没有回退,渲染会在页面生成之前被阻塞,类似于服务器端渲染期间发生的情况。
在这两种情况下,页面都会添加到预呈现页面列表中。对同一路径的后续请求将服务于预生成的页面。
next export
不支持这些选项,以防您依赖它。
请注意,revalidate
在 getStaticProps
中用于 Incremental Static Regeneration - 在您想要更新现有的、生成的页面的情况下。既然你提到生成的页面永远不会改变,那么就没有必要使用 revalidate
.
我有一个 MERN 应用程序,其中集成了 NextJS。第一次使用 NextJS,请耐心等待。我最初到处都使用 SSR (getServerSideProps
)。
要点:
- 我有超过 150,000 个页面包含永远不会更改的静态内容。
- 每周我都会添加大约 +100 个新页面。
我想这里的理想情况是使用 getStaticProps
和 getStaticPaths
,并且在初始构建这 150k 页面之后,每周只构建新添加的页面并保留我已有的页面照原样建造,因为它永远不会改变。
我怎样才能做到这一点?我应该在这里使用 revalidate
吗?我一直在文档中阅读它,但我并不完全理解它。
这可以通过 getStaticProps
/getStaticPaths
实现。您必须在 getStaticPaths
.
fallback: true
or fallback: 'blocking'
使用 fallback: true
,在构建时未生成的路径将在第一个请求时提供后备页面,而 Next.js 静态生成页面。完成此操作后,页面将从后备页面交换到实际的完整页面。
使用 fallback: 'blocking'
,在构建时未生成的路径将等待 HTML 由 Next.js 生成,然后在完成后提供页面。与 fallback: true
不同的是,由于没有回退,渲染会在页面生成之前被阻塞,类似于服务器端渲染期间发生的情况。
在这两种情况下,页面都会添加到预呈现页面列表中。对同一路径的后续请求将服务于预生成的页面。
next export
不支持这些选项,以防您依赖它。
请注意,revalidate
在 getStaticProps
中用于 Incremental Static Regeneration - 在您想要更新现有的、生成的页面的情况下。既然你提到生成的页面永远不会改变,那么就没有必要使用 revalidate
.