Performance 与在Gatsby中使用页面上的graphQL查询相比,向上下文对象传递数据是否有任何性能增强?

Performance 与在Gatsby中使用页面上的graphQL查询相比,向上下文对象传递数据是否有任何性能增强?,performance,graphql,gatsby,Performance,Graphql,Gatsby,我想知道,通过上下文对象为使用gatsby节点文件中的createPages函数构建的页面传递数据与使用该模板中的graphQL查询获取相同数据相比,是否有任何性能增强或任何好处 我没有注意到任何差异,除了当您已经处理了gatsby节点文件中的一些传入数据并将其传递到页面时,可以减少代码中的一些冗余之外 但是,如果在节点文件中进行了查询,但没有对数据做太多处理,该怎么办?您应该通过上下文对象传递所有这些信息吗?还是在页面模板本身的显式查询中处理更好?使用gatsby node.js查询的主要建议

我想知道,通过上下文对象为使用gatsby节点文件中的createPages函数构建的页面传递数据与使用该模板中的graphQL查询获取相同数据相比,是否有任何性能增强或任何好处

我没有注意到任何差异,除了当您已经处理了gatsby节点文件中的一些传入数据并将其传递到页面时,可以减少代码中的一些冗余之外


但是,如果在节点文件中进行了查询,但没有对数据做太多处理,该怎么办?您应该通过上下文对象传递所有这些信息吗?还是在页面模板本身的显式查询中处理更好?

使用
gatsby node.js
查询的主要建议是根据查询结果动态创建页面。最明显的例子是博客;其思想是查询博客中的所有文章/帖子,通过
createPages
API从中创建页面,并通过上下文传递一些标识符值来查询每个帖子的参数(通常是slug)。它们在的范围内,不用于处理数据,只需使用节点API与它们进行交互。它基于服务器端

另一方面,标准页面查询(或
staticQuery
)用于根据查询收集数据,并直接在页面/组件上使用

所有类型的GraphQL查询都由
develop
/
build
触发。此外,它们有不同的范围、不同的建议和不同的用途,因此,在这种情况下进行比较是不公平的


由于节点API查询是基于承诺的,如果它们管理大量数据,则可能会使
构建
/
开发
时间过载,因为它们会阻塞编译的其余部分。因此,在这种情况下,最好将此负载添加到页面查询,而不是基于节点API的查询。

当您有大量节点、数千个或更多节点和/或计算机速度较慢时,性能会明显不同。但这不仅仅是性能问题-我可能错了,但我记得注意到,如果在gatsby节点中执行查询,它不会记录页面依赖于查询返回的数据-因此,当数据更改时,页面将不会更新。在构建模式下这并不重要,但在开发模式下,您通常希望在页面模板中进行查询。@artem-这很有意义,这是我在提问时忽略的一点:节点文件仅在构建时使用。显然,在节点文件和页面文件中进行查询有不同的用例。谢谢你指出这一点!