Базовый пример Apollo на https://www.apollographql.com/docs/apollo-server/features/data-sources.html#Implementing-your-own-cache-backend они утверждают, что сделать кэш redis так же просто, как:
const { RedisCache } = require('apollo-server-cache-redis');
const server = new ApolloServer({
typeDefs,
resolvers,
cache: new RedisCache({
host: 'redis-server',
// Options are passed through to the Redis client
}),
dataSources: () => ({
moviesAPI: new MoviesAPI(),
}),
});
Когда я смотрю на примеры non-redis, там говорится, что это просто { get, set }
для кеша. Это означает, что я теоретически должен быть в состоянии сделать.
cache : {
get : function() {
console.log("GET!");
},
set : function() {
console.log("SET!");
}
}
Независимо от того, что я пытаюсь, мои функции кэширования никогда не вызываются, когда я использую проводник graphQL, который изначально предоставляет apollo-server.
Я пробовал с cacheControl : true
и с cacheControl
, установленным как https://medium.com/brikl-engineering/serverless-graphql-cached-in-redis-with-apollo-server-2-0-f491695cac7f. Ничего.
Есть ли пример того, как реализовать базовое кэширование в Apollo, в котором не используется платная система Apollo Engine?