apollo-cache-inmemory 的驱逐规则是啥?

Posted

技术标签:

【中文标题】apollo-cache-inmemory 的驱逐规则是啥?【英文标题】:What are the eviction rule for apollo-cache-inmemory?apollo-cache-inmemory 的驱逐规则是什么? 【发布时间】:2019-01-10 15:19:35 【问题描述】:

据我了解,缓存中的任何内容都是短暂的,并且受制于某种驱逐规则,例如 LRU。在这种情况下,如果我们使用内存缓存和 apollo-link-state 来代替 redux 或 vuex,我们如何保证某些状态不会在应用运行过程中被驱逐?

【问题讨论】:

【参考方案1】:

从 Apollo Client v2 开始,没有任何驱逐。根据 cmets,它可能在 v3 的路线图上。

您可以查看这些 Github 问题进行讨论:

https://github.com/apollographql/apollo-client/issues/3965 https://github.com/apollographql/apollo-feature-requests/issues/4 https://github.com/apollographql/apollo-client/issues/621

至于更一般的问题 - 在大多数情况下,不需要这样的保证。原因是由于 Apollo 客户端和 React 设计,缓存对应用程序是完全透明的。当您使用Query 组件时,您的子组件将接收数据。此时,您可以决定数据是否可用。

例如,如果您决定在数据不可用时渲染加载微调器,那么理论上每次驱逐数据时,您的组件都会重新渲染并显示微调器。

我可以想象这样一种情况,您可能有一个长时间运行的异步操作(如果它不是异步的,那么由于 javascript 执行模型,数据不能在其中被驱逐)。在这种情况下(很少见,但可能),您可以先将数据复制到局部变量等。

【讨论】:

以上是关于apollo-cache-inmemory 的驱逐规则是啥?的主要内容,如果未能解决你的问题,请参考以下文章

点网内存缓存驱逐

System.Runtime.Caching Absolute Expiration 按设计驱逐数据,但如何实现非驱逐过期数据策略?

Spring Cache:驱逐多个缓存

kubernetes之node资源紧缺时pod驱逐机制

如何在jcache中配置像LFU和LRU这样的驱逐策略

[转帖]造一艘顶级的驱逐舰要多少钱?