Graphql 嵌套查询非常慢
Graphql nested query is extremely slow
我们项目基于REST的时候,有200ms的响应时间~
更改项目时使用 GraphQL。
因为每个节点都在尝试解析,并且在解析之后,它们的子实体也在解析。
导致极高的延迟,响应时间为 - 11 秒!
我所做的是尝试提取所有需要的信息,包括所有子实体,并从查询解析器中解析这个巨大的对象。
响应时间减少到 800 毫秒。
但是,子实体的解析器仍在发生! (我不得不为这个测试关闭它们)。
在某些情况下如何关闭它们?
还有其他方法可以解决吗?
听起来您可能只想在父对象上的 属性 未定义时获取每个字段的关联数据。所以,如果你的解析器看起来像这样:
foos ({ id }, args, context) {
return getFoos(id)
}
只需将获取数据的调用设置为有条件的,如下所示:
foos ({ id, foos }, args, context) {
return foos ? foos : getFoos(id)
}
我们项目基于REST的时候,有200ms的响应时间~ 更改项目时使用 GraphQL。
因为每个节点都在尝试解析,并且在解析之后,它们的子实体也在解析。 导致极高的延迟,响应时间为 - 11 秒!
我所做的是尝试提取所有需要的信息,包括所有子实体,并从查询解析器中解析这个巨大的对象。
响应时间减少到 800 毫秒。
但是,子实体的解析器仍在发生! (我不得不为这个测试关闭它们)。 在某些情况下如何关闭它们?
还有其他方法可以解决吗?
听起来您可能只想在父对象上的 属性 未定义时获取每个字段的关联数据。所以,如果你的解析器看起来像这样:
foos ({ id }, args, context) {
return getFoos(id)
}
只需将获取数据的调用设置为有条件的,如下所示:
foos ({ id, foos }, args, context) {
return foos ? foos : getFoos(id)
}