是否可以在运行时在 NextJS 的第一个视图上渲染新页面?

use*_*087 2 javascript next.js

目前,我正在使用getStaticPropsgetStaticPaths在我的网站上线之前预渲染最新的 X 篇文章。这效果很好,但如果在网站仍在运行时创建新文章并显示在首页上,则新文章将返回 404 页面。

我想要的是,如果页面不存在,则将 id(如文件中的 mysite.com/posts/id /posts/[id].js)传递给函数,以便可以在运行时在服务器上预渲染页面。我不想默认为getServerSideProps,因为这会在每个请求上呈现页面,我正在寻找的是永久呈现页面,并将其保存为可爬网文件getStaticProps,就像仅在运行时一样。

TL:DR 我正在寻找运行时的getStaticPaths/getStaticProps行为。这在 NextJS 中可能吗?

如果不是,我怎么能随时获得新文章,而不必经常关闭服务器,重新构建它,然后重新启动它,这似乎非常难以管理。

Mat*_*tta 5

TL:DR 我正在寻找运行时期间的 getStaticPaths/getStaticProps 行为。这在 NextJS 中可能吗?

是和不是。有一个重新验证选项,到目前为止,需要客户端请求才能使陈旧数据无效。然后必须发出另一个客户端请求来检索更新的数据。这不可避免地会导致用户 A 看到陈旧数据(触发重新验证)而用户 B 看到最新数据。到目前为止,还没有办法以编程方式触发 CRUD(CREATE、READ、UPDATE、DELETE)事件的重新验证。

一种(不推荐)解决方法是在 CRUD 事件发生后立即手动触发客户端请求。这样,理论上,用户 A 和用户 B 应该始终看到最新的数据。不幸的是,这意味着 CRUD 操作的响应时间更长。

简而言之,现在getServerSideProps保证 SEO 索引数据 100% 最新的唯一可用选项。否则,如果您不关心 SEO 索引,那么客户端请求就足够了。