Как кешировать используя apollo-сервер - PullRequest
0 голосов
/ 29 августа 2018

Базовый пример 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?

1 Ответ

0 голосов
/ 16 сентября 2018

Вы должны иметь возможность использовать пакет NPM «apollo-server-caching», внедрив собственный интерфейс. См. Реализация собственного кэша , в котором приведен пример.

...