【发布时间】:2022-06-23 18:09:53
【问题描述】:
我正在阅读documentation for Apollo server-side caching,但没有看到任何关于缓存通常如何键控的内容。
我需要的是一个缓存,它以响应中包含的对象 ID 为键,而不是以您从查询中获得的东西为键。
例如,假设下面的 Person 对象由 ID 字段唯一标识,而 hasShortHair 字段的计算成本很高,但很少更改。
type Person {
id: String!
hasShortHair: Boolean!
}
假设有 2 种不同的查询类型可以返回一个 Person:
getPerson(id: String!): Person!
getAllPeople: [Person!]!
理想情况下,对于具有给定 ID 的人,如果该人最近已通过 getPerson 或 getAllPeople 获取,那么我想缓存为该人计算的 hasShortHair 的值,并将该缓存用于 both getPerson 和 getAllPeople 查询返回那个人。
像下面这样设置可以实现吗? (Based on the book example in the documentation)
type Person @key(fields: "id") @cacheControl(maxAge: 30) {
id: String!
hasShortHair: Boolean!
}
或者缓存是否仍会按请求进行键控?
【问题讨论】: