【发布时间】:2021-11-14 00:14:39
【问题描述】:
我有一个应用程序,其中相同的数据出现在图中的许多地方,需要优化数据查询以避免过于频繁地处理和发送相同的数据。
例如,考虑以下伪模式:
type Group {
name: String
members: [Person]
}
type Person {
name: String
email: String
avatar: Avatar
follows: [Person]
followedBy: [Person]
contacts: [Person]
groups: [Group]
bookmarks: [Bookmark]
sentMessages: [Message]
receivedMessages: [Message]
}
type Message {
text: String
author: Person
recipients: [Person]
}
type Bookmark {
message: Message
}
查询用户数据很容易包含数百个(如果不是数千个)个人对象,即使它的朋友/联系人/关注的小圈子仅包含数十个不同的用户。
在我的实际实现中,大约 80% 的 GraphQL 查询(以字节为单位)是冗余的,考虑到客户端在同一空间中执行许多不同的查询,超过 90% 的所有传输和处理的数据都是冗余的。
我怎样才能改进模型,这样我就不必一次又一次地加载相同的数据,而不会使客户端过于复杂?
我将 Apollo 用于 GraphQL 客户端和服务器。
【问题讨论】: