reactjs - 缓存和redux有什么区别

标签 reactjs caching redux apollo apollo-client

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

我大致是从this answer来理解的应用程序状态存储(例如 redux 或 context)是缓存的一种形式,它的作用是缓存,或者在本例中,将信息“存储”在 RAM 中。 Apollo 的客户端缓存之类的东西有何不同?它是一样的,只是像使用 redux 一样存储数据,还是做一些不同的事情?谢谢。

最佳答案

Apollo 或服务器状态库,如 React-Query提供从服务器获取数据并将结果存储在客户端内存中的工具,就像使用 Redux 或 Context (或只是在组件状态中)一样。

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

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

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

编辑 phry评论

Redux 不仅仅是一种存储数据的方式,它还是一个 javascript Flux实现,这是一种共享 UI 状态管理的设计模式。事件虽然you can implement a HTTP cache with Redux ,这不是它的主要目标(显然您必须实现缓存逻辑 which is not a trivial task )。另一方面,React-Query , SWRApollo是缓存工具。

关于reactjs - 缓存和redux有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65874952/

相关文章:

javascript - React 中的条件样式

javascript - react : Update Child Component Without Rerendering Parent

twitter-bootstrap - 以编程方式触发 React-Bootstrap 输入组件验证

reactjs - Redux - reducer 中的外部库和 "React"?

node.js - Nodejs Base64 到 Blob 转换

caching - 在这些缓存场景中,代码在哪里执行?

python - Django 。仅为匿名提供缓存内容

MySQL 性能

javascript - 如何使用一个 API 中的 ID 从 Redux 中的另一个 API 获取信息?

javascript - 在 redux 的 Provider 中包装多个 React DOM 组件