如何使用Apollo服务器进行缓存

时间:2018-08-28 23:41:35

标签: graphql apollo apollo-server

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(),
  }),
});

当我查看非redis的示例时,它指出这是一个简单的{ get, set }缓存。这意味着我从理论上应该能够做到。

cache : {
   get : function() {
     console.log("GET!");
   },
   set : function() {
     console.log("SET!");
   }
}

无论我尝试什么,当我使用apollo-server本地提供的graphQL Explorer时,都不会调用我的缓存功能。

我尝试对cacheControl : truecacheControl进行设置,就像在https://medium.com/brikl-engineering/serverless-graphql-cached-in-redis-with-apollo-server-2-0-f491695cac7f中一样。没事。

是否有一个示例,说明如何在不使用付费Apollo引擎系统的Ap​​ollo中实现基本缓存?

2 个答案:

答案 0 :(得分:0)

您应该能够通过实现自己的界面来使用NPM软件包“ apollo-server-caching”。请参阅Implementing Your Own Cache,其中提供了一个示例。

答案 1 :(得分:0)

您可以查看此package的实现,该实现缓存完整的响应以实现您自己的缓存。

cordova-plugin-network-information