【发布时间】:2018-12-15 15:38:35
【问题描述】:
我最近在official blog 上读到了一篇关于 Apollo 客户端缓存的文章,其中screenshot 这里。
根据文章,如果当前查询包含缓存对象以及其他对象,则该查询将被去重以仅查询其余对象。
但是,我通过在服务器上注销查询进行了一些测试,这表明查询没有被部分重复数据删除。相反,整个查询被发送到服务器。
任何人都可以对此提供任何见解。非常感谢。
测试:
第一个查询:
{
post(_id: 1) {
_id
title
}
}
第二次查询:
{
post(_id: 1) {
_id
title
}
author(_id: 1) {
_id
firstName
}
}
预期结果: 服务器收到的第二个查询只包含
author(_id: 1) {
_id
firstName
}
根据博客,因为post(_id: 1) 在发送第一个查询后已被缓存。
实际结果: 服务器日志:(第二个查询未去重)
{
"operationName": null,
"variables": {},
"query": "{\n post(_id: 1) {\n _id\n title\n __typename\n
}\n}\n"
} /graphql 200 81 - 0.520 ms
{
"operationName": null,
"variables": {},
"query": "{\n post(_id: 1) {\n _id\n title\n __typename\n
}\n author(_id: 1) {\n _id\n firstName\n __typename\n }\n}\n"
} /graphql 200 140 - 0.726 ms
【问题讨论】:
标签: caching graphql apollo apollo-client