Apollo 客户端 + NextJS 内存泄漏、InMemoryCache

Val*_*kov 8 memory-leaks server-side-rendering next.js apollo-client in-memory-cache

官方 Apollo 和 NextJS 建议在每次执行 GraphQL 请求时创建一个新的 ApolloClient 实例,以防使用 SSR。

这通过内存使用显示了良好的结果,内存增长了一定量,然后使用垃圾收集器重置到初始级别。

问题在于初始内存使用水平不断增长,并且调试器显示泄漏是由附加到 ApolloClient 实例作为缓存存储的“InMemoryCache”对象引起的。

我们尝试对所有新的 Apollo 实例使用相同的“InMemoryCache”实例,并尝试禁用“defaultOptions”中的缓存自定义策略,但泄漏仍然存在。

是否可以完全关闭缓存?比如在 ApolloClient 初始化中为“cache”选项设置“false”值?或者也许这是已知解决方案的已知问题,并且可以通过定制“InMemoryCache”来解决?

我们尝试了很多选项,例如强制缓存垃圾回收、驱逐缓存中的对象等,但没有任何帮助,泄漏仍然存在。

谢谢你!