我试图根据这个指南为一项结果每天只更改一次的昂贵查询设置缓存。该查询需要7-8秒钟,大部分时间花在了DB查询上,因为从解析器返回的响应必须进行大量处理。
我使用的是
这就是我所做的:
我希望解析器只运行一次,之后响应应该几乎立即从缓存中返回。但这并没有实现。我是做错了什么还是没有理解应该如何工作呢。
我尝试在模式中也放置了缓存提示,但结果并没有改善。
我使用的是
apollo-server-express
库和更改插件是apollo-server-plugin-response-cache
。这就是我所做的:
server.js
const { ApolloServer } = require('apollo-server-express')
const responseCachePlugin = require('apollo-server-plugin-response-cache')
const server = new ApolloServer({
typeDefs,
resolvers,
context: async ({ req }) => {
// ...
},
plugins: [responseCachePlugin()]
resolvers.js
personDetails: async (root, args, ctx, info) => {
info.cacheControl.setCacheHint({ maxAge: 600 })
const persons = await Person.find({}).populate('details')
// processing the data
return processedData
}
我希望解析器只运行一次,之后响应应该几乎立即从缓存中返回。但这并没有实现。我是做错了什么还是没有理解应该如何工作呢。
我尝试在模式中也放置了缓存提示,但结果并没有改善。