Caching 如何在Apollo中为GraphQL订阅设置数据源,而无需长时间运行缓存

Caching 如何在Apollo中为GraphQL订阅设置数据源,而无需长时间运行缓存,caching,graphql,subscription,apollo-server,restdatasource,Caching,Graphql,Subscription,Apollo Server,Restdatasource,我在Apollo server中使用REST作为所有REST后端操作的基础。这对于查询和突变非常有效,尤其是在单个请求中使用缓存响应的能力正如期发挥作用 我还希望在订阅上下文中使用RESTDataSource实现,以防客户端请求订阅消息的“本机”负载中不存在的详细信息(在这种情况下,Apollo将调用相应的解析程序来获取它) 目前,作为ApolloServer使用的上下文回调函数的一部分,我正在初始化我的RESTDataSources,并将它们添加到返回的上下文中(我仅在回调通过连接对象时才这样

我在Apollo server中使用REST作为所有REST后端操作的基础。这对于查询和突变非常有效,尤其是在单个请求中使用缓存响应的能力正如期发挥作用

我还希望在订阅上下文中使用RESTDataSource实现,以防客户端请求订阅消息的“本机”负载中不存在的详细信息(在这种情况下,Apollo将调用相应的解析程序来获取它)

目前,作为ApolloServer使用的上下文回调函数的一部分,我正在初始化我的RESTDataSources,并将它们添加到返回的上下文中(我仅在回调通过
连接
对象时才这样做)

问题在于,这是在建立订阅时调用的,而不是在每个消息到达该订阅时调用的。因此,只要订阅保持打开状态,RESTDataSource的自然缓存行为就会起作用,这可能太长了,不适合缓存响应

我对如何克服这一问题的任何建议都感兴趣;可能以某种方式实例化数据源,以便在这种特定情况下禁用缓存,或者在每条消息到达时以某种方式重新初始化上下文中的数据源(尽管我看不到合适的入口点)