首页 > 解决方案 > 缓存和redux有什么区别

问题描述

我想知道 redux 或上下文或任何类型的应用程序状态存储与客户端缓存之间有什么区别,具体示例是Apollo 的客户端缓存

我从这个答案中大致了解到,应用程序状态存储,例如 redux 或上下文,是一种缓存形式,它的作用是缓存,或者在这种情况下,“存储”信息在 RAM 中。是什么让像 Apollo 的客户端缓存这样的东西与众不同?它是一样的,只是像使用 redux 一样存储数据,还是做一些不同的事情?谢谢。

标签: reactjscachingreduxapolloapollo-client

解决方案


Apollo 或React-Query 之类的服务器状态库提供了从服务器获取数据并将结果存储在客户端内存中的工具,就像您对 Redux 或 Context(或简单地处于组件状态)所做的那样。

但它们也提供工具来进行更复杂的缓存,以提供流畅的用户体验和带宽优化:

  • 允许您为每个请求设置缓存策略,
  • 定义缓存持续时间,
  • 在需要时使缓存条目无效(例如在突变之后,当服务器数据更改时)
  • 定义错误重试策略,
  • 在后台管理定期刷新,
  • ...

这些工具旨在以有效的方式处理 UI 应用程序中的服务器状态。这涉及存储数据,但这只是一个体面的 HTTP 缓存工具的第一步(也是简单的)。

phry评论编辑

Redux 不仅仅是一种存储数据的方式,它是一种 javascript Flux实现,它是一种用于共享 UI 状态管理的设计模式。Event 虽然你可以用 Redux 实现 HTTP 缓存,但这不是它的主要目标(显然你必须实现缓存逻辑,这不是一项简单的任务)。另一方面,React-QuerySWRApollo是缓存工具。


推荐阅读