据我了解,缓存中的任何内容都是短暂的,并且会受到某种驱逐规则的影响,例如LRU。在这种情况下,如果我们使用内存缓存和apollo-link-state来代替redux或vuex,我们如何保证某些状态不会在运行应用程序的过程中被驱除?
答案 0 :(得分:0)
从Apollo Client v2开始,没有任何驱逐行为。根据评论,它可能在v3的路线图上。
您可以检查这些Github问题进行讨论:
对于更普遍的问题-在大多数情况下,不需要这样的保证。原因是由于Apollo Client和React设计,缓存对应用程序完全透明。当您使用Query
组件时,子组件将接收数据。此时,您决定如果数据可用或不可用该怎么办。
例如,如果您决定在数据不可用时渲染加载微调器,则理论上每次移出数据时,组件将重新呈现并显示微调器。
我可以想象一下您可能需要长时间运行的异步操作(如果不是异步操作,则由于JavaScript执行模型的原因,无法再次驱除其中的数据)。在这种情况下(很少见,但有可能),您可能会首先将数据复制到局部变量等中。