【问题标题】:Next.js + Strapi blog: content not updatedNext.js + Strapi 博客:内容未更新
【发布时间】:2021-09-14 09:28:06
【问题描述】:

我有一个 Next.js 应用程序正在生产中。我的内容是通过 Strapi 管理的。我在每个页面上使用getStaticProps 函数获取所有内容(实际上是 2 页,小博客)。

但是,当我创建新内容或更新现有内容时,我的 Next.js 应用不会获取新内容或更新后的内容。

可能是因为在构建时获取?如果是,我是否可以在客户端获取内容并享受 SEO 的好处?

有什么想法吗?

非常感谢! :)

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: javascript next.js strapi


【解决方案1】:

考虑为Incremental Static Regeneration 设置revalidate 政策以更新陈旧的内容。

https://nextjs.org/docs/basic-features/data-fetching#incremental-static-regeneration

// This function gets called at build time on server-side.
// It may be called again, on a serverless function, if
// revalidation is enabled and a new request comes in
export async function getStaticProps() {
  const res = await fetch('https://.../posts')
  const posts = await res.json()

  return {
    props: {
      posts,
    },
    // Next.js will attempt to re-generate the page:
    // - When a request comes in
    // - At most once every 10 seconds
    revalidate: 10, // In seconds
  }
}

如果这不符合您的更新政策,您将不得不转到server-side rendering and fetch data on each request

【讨论】:

  • 感谢您的帮助,它对我来说真的很棒!但我有一个问题,它实际上是如何工作的?是否每 10 秒触发一次构建(在这种情况下)?还是仅按需重建?我的意思是,只有当用户点击该页面时才会触发重建?再次感谢!
  • 来自请求流文档: > 在 60 秒窗口之后,下一个请求仍将显示缓存(陈旧)页面。 Next.js 在后台触发页面的重新生成。 > 成功生成页面后,Next.js 将使缓存失效并显示更新的产品页面。如果后台重新生成失败,旧页面保持不变。
  • 是的,我读过它,但是否每 60 秒或仅当用户点击页面时才会重建?
  • “下一个请求仍将显示缓存的(陈旧)页面”。所以不,没有请求,没有再生触发器,没有再生。
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多