我正在研究response caching并且很想知道response caching
的正确方法。
尽管cache hints只有两种类型,但我并不清楚如何正确使用它们。
我的经验法则是,只要我们获取只有登录用户可以访问的数据,就应该实现PRIVATE scope
。
maxAge
时,我感到完全迷失了。似乎数据是否将被兑现40秒或60 ...
鉴于Apollo文档中的一个示例,我没有看到在votes
中缓存type Post
500秒并将type Post
的缓存设置为240的原因(根据文档:a较小的maxAge
会覆盖较长的一个
type Post @cacheControl(maxAge: 240) {
id: Int!
title: String
author: Author
votes: Int @cacheControl(maxAge: 500)
readByCurrentUser: Boolean! @cacheControl(scope: PRIVATE)
}
type Author @cacheControl(maxAge: 60) {
id: Int
firstName: String
lastName: String
posts: [Post]
}
请你帮助我理解这些概念,因为没有它们就很难向前推进。
答案 0 :(得分:2)
您可以在架构上定义缓存控制提示,然后Apollo Engine将根据查询中包含的字段计算响应的TTL。给出以下架构:
type Post @cacheControl(maxAge: 240) {
id: Int!
title: String
author: Author
votes: Int @cacheControl(maxAge: 30)
readByCurrentUser: Boolean! @cacheControl(scope: PRIVATE)
}
对帖子的查询将被缓存240秒,除非它包含votes
,这将使响应仅可缓存30秒。
同样,包括readByCurrentUser
会将整个回复标记为private
,因此不会将其存储在公共缓存中。