更新时间:2023-11-27 10:55:58
我在Gatsby Discord上发布了此问题,LekoArts
选择了方法1,这显然是正确的选择。
这是他们对不和谐的回应:
因为否则您将使每个页面加载的数据膨胀,因为每个页面都将加载您将在Gatsby节点中查询的所有内容。Gatsby还必须查询每个可以达到数百万的节点,就像本期https://github.com/gatsbyjs/gatsby/issues/20671
另一方面,如果你传递id,你可以得到很大的速度提升https://github.com/gatsbyjs/gatsby/pull/20609
这是Gatsby贡献者链接的第一期GitHubLekoArts
vladar
的另一个粘贴:
@martinMikusat感谢您提出这个问题!
看起来您在页面上下文中放入了太多数据。你把你的整个数据集放进去: https://github.com/MartinMikusat/gatsby-reproduce/blob/master/gatsby-node.esm.js#L83
页面上下文不用于将数据传递给页面。它旨在传递简单的参数,稍后可以将这些参数作为变量传递给页面的GraphQL查询。
存在与上下文相关的开销-Gatsby必须访问上下文中每个对象的每个字段才能推断SitePageContext类型。
您有850个节点的页面(在您的示例中为SanityLens),并且每个页面上下文都包含其中的所有节点。此外,每个节点大约有30个字段。这意味着盖茨比必须访问850*850*30个油田(大约2170万)。在这样的情况下(当上下文使用不正确时),我们可以通过显示警告来做得更好,并且我们正好有一个问题:#14213
很抱歉这有点让人困惑,感谢您使用Gatsby💜