在我的应用中,用户可能会请求哪些朋友执行了特定操作:
query($id: Int) {
post(id: $id) {
likes {
id
name
photo
}
}
}
但这意味着为不同的帖子重新获取相同对象的id,名称和照片数据(因为服务器不知道我已经缓存了什么)。我可以使用什么策略来尝试利用缓存?
我只能想到的是在上面的查询中我只请求id字段并对名称和照片进行单独查询并尝试批量处理。
答案 0 :(得分:0)
GraphQL中没有内置方法可以在返回的同一结果对象图中共享对象。你实际上回答了自己的问题。通过使用ID规范化对象的结果图,它确实减少了您要传输回客户端的JSON数量。但是,它要求客户端以不同的方式请求数据。例如,
query($id: Int) {
post(id: $id) {
likes {
id
}
}
likesByPostId(postId: $id) {
id
name
photo
}
}
在GraphQL中,我们让客户决定如何优化数据获取。服务器只返回客户端请求的形状的数据。所以你无法真正为客户做出决定。