Next.js静态生成

时间:2020-04-29 18:14:15

标签: next.js

我使用next.js建立了一个网站 该指南说next.js有两种形式的预渲染:

静态生成(推荐):HTML是在构建时生成的,并将在每个请求上重用。 服务器端渲染:在每个请求上生成HTML。

如果我使用的是Static Generation,请在我的页面中说以下代码:

export async function getStaticProps({ params }) {
    const fetchedData = await axios.get(API_URL);

    return {
        props: {
            fetchedData
        }
    }
}

这是否意味着此功能仅在构建时(当我部署网站时)执行一次,然后意味着将在网站上显示的数据从部署之日起就是旧数据? 如果是这样,我如何才能强制next.js每天重建此页面?

2 个答案:

答案 0 :(得分:2)

好,答案是肯定的,将要显示的数据是在构建时间(例如,部署时间)上获取的数据,因此,基本上,如果API上的数据发生更改,则该站点仍然具有旧数据。 / p>

关于第二个问题-如何强制每隔一段时间重新构建next.js-我找到了一个适合我的解决方案(因为我使用的是Vercel托管):

https://vercel.com/docs/v2/more/deploy-hooks?query=Deploy%20Hooks#

答案 1 :(得分:1)

我刚刚开始使用next.js。我正在使用Firebase托管。 可以在请求时调用getStaticProps。

  • 如果将后备时间设置为true。然后,将在请求时构建getStaticPaths中包含的任何路径。 (之所以这样做,是因为我有一个博客,而且我不希望构建时间在几分钟之内...)
  • 您想要的其他选项是incremental static regeneration。基本上,如果最后一个请求是前一个时间(您以秒为单位设置),它将按请求时间重建页面。