要使缓存失效,您可以使用apollo-server-plugin-response-cache
插件的cacheControl
功能。通过设置maxAge
来定义缓存的最大时间,然后使用cacheControl.invalidate
方法来手动使缓存失效。
以下是一个示例代码:
const { ApolloServer } = require('apollo-server');
const { ApolloServerPluginResponseCache } = require('apollo-server-plugin-response-cache');
const typeDefs = `
type Query {
hello: String
}
`;
const resolvers = {
Query: {
hello: () => 'Hello, World!'
}
};
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [ApolloServerPluginResponseCache()],
cacheControl: {
defaultMaxAge: 60, // 缓存的默认最大时间为60秒
},
});
server.listen().then(({ url }) => {
console.log(`Server ready at ${url}`);
});
// 在某个地方使缓存失效
server.graphqlPath && server.graphqlPath.cacheControl && server.graphqlPath.cacheControl.invalidate('Query.hello');
在上面的示例中,我们首先引入了ApolloServerPluginResponseCache
插件,并将其添加到Apollo Server的插件列表中。我们还设置了cacheControl
的defaultMaxAge
为60秒,这将是缓存的默认最大时间。
然后,在某个地方(例如mutation或其他需要更新缓存的地方),我们可以通过访问server.graphqlPath.cacheControl.invalidate
方法来手动使缓存失效。在示例中,我们使Query.hello
的缓存失效。
请注意,server.graphqlPath.cacheControl.invalidate
方法仅在使用了apollo-server-plugin-response-cache
插件并启用了缓存控制时才可用。