Next.js 按需静态再生

Posted

技术标签:

【中文标题】Next.js 按需静态再生【英文标题】:Next.js Static Regeneration on demand 【发布时间】:2021-07-03 20:11:15 【问题描述】:

我非常喜欢 Next.js 的 Incremental Static Regenration。

但是,我正在寻找一种方法来强制按需重新生成静态页面。理想情况下,当我的源数据库中的数据发生变化时,我可以通过 API 调用触发该命令。

这个想法是在每次数据更改后重新生成每个页面一次。我可以通过在重新验证间隔后获取目标页面来强制 ISR 页面重新生成,但我正在寻找一种方法在数据更改之前不要重复生成它们

任何想法,如果它是可行的,如何? :-)

【问题讨论】:

【参考方案1】:

目前(Next.js 10.1.3)没有对该功能的原生支持,触发页面重新验证的唯一方法是使用基于间隔的 HTTP 请求。 然而 Next.js 团队是exploring on-demand (triggered via API route) revalidation(另见https://github.com/vercel/next.js/discussions/10721#discussioncomment-686) 并且由于这是一项要求很高的功能,将来可能会提供。Here 您可以尝试根据需要重新验证页面,但它有一些严重的警告并且尚未准备好生产。

来源:Update a static page by eventsuper Incremental Static Regeneration

【讨论】:

感谢您的回答,我很高兴听到这一壮举的需求量很大,期待原生解决方案 :-) 嘿!来自 Vercel 的 Lee。如果您想试用此功能,请发送电子邮件至 lee at vercel.com 给我 :) 为了实现这一点,您只需要清除需要更新的特定页面的缓存,然后按需生成将在下一次请求时启动? @leerob 这个功能会在什么时候广泛使用?

以上是关于Next.js 按需静态再生的主要内容,如果未能解决你的问题,请参考以下文章

增量静态再生中的重新验证过程如何工作?

在 Next.js 中,为啥要静态渲染? _document.js 包括 getInitialProps

Next.js 将静态路由与动态路由重叠

Next.Js 使用无头 CMS 资产生成静态站点

Next.js 用于静态导出的动态页面参数

Next.js:我们如何将动态路由重定向到静态页面?