Next.js构建时是否会生成重复的SSG静态页面?
结论:不会出现重复生成SSG页面的问题,你的认知存在偏差。
- 首先
index.js属于独立的根路由,它的getStaticProps仅负责生成首页这1个静态页面,调用get10PostsFromDB获取10篇文章只是为了填充首页的文章列表内容,不会生成任何单篇文章的详情页。 - 动态路由
[post].js的getStaticPaths返回的10个路径,才是触发构建时生成10篇文章对应详情页的逻辑,和首页的生成流程完全独立,不存在重复生成的情况。
现有代码的可优化点:
- 你当前
[post].js的getStaticProps里直接写死了notFound: true,这个配置会导致所有访问详情页的请求都返回404,正确写法应该是判断getASinglePostFromDB返回为空的时候才返回notFound: true,查询到有效文章时不要携带该配置即可。 - 你设置的
revalidate: 1代表页面访问后最多1秒就会触发后台增量更新,属于极高的更新频率,如果你的博客更新频率没有这么高,可以适当调大该数值降低数据库和服务器的压力。 - 你配置的
fallback: 'blocking'是合理的,后续新增文章不需要全量重建站点,首次访问新文章路径时会在服务端生成页面并缓存,之后访问就和预构建的静态页面表现一致。
内容的提问来源于stack exchange,提问作者Zak
相关产品推荐
相关产品推荐

