reactjs - 缓存和redux有什么区别
问题描述
我想知道 redux 或上下文或任何类型的应用程序状态存储与客户端缓存之间有什么区别,具体示例是Apollo 的客户端缓存。
我从这个答案中大致了解到,应用程序状态存储,例如 redux 或上下文,是一种缓存形式,它的作用是缓存,或者在这种情况下,“存储”信息在 RAM 中。是什么让像 Apollo 的客户端缓存这样的东西与众不同?它是一样的,只是像使用 redux 一样存储数据,还是做一些不同的事情?谢谢。
解决方案
Apollo 或React-Query 之类的服务器状态库提供了从服务器获取数据并将结果存储在客户端内存中的工具,就像您对 Redux 或 Context(或简单地处于组件状态)所做的那样。
但它们也提供工具来进行更复杂的缓存,以提供流畅的用户体验和带宽优化:
- 允许您为每个请求设置缓存策略,
- 定义缓存持续时间,
- 在需要时使缓存条目无效(例如在突变之后,当服务器数据更改时)
- 定义错误重试策略,
- 在后台管理定期刷新,
- ...
这些工具旨在以有效的方式处理 UI 应用程序中的服务器状态。这涉及存储数据,但这只是一个体面的 HTTP 缓存工具的第一步(也是简单的)。
从phry评论编辑
Redux 不仅仅是一种存储数据的方式,它是一种 javascript Flux实现,它是一种用于共享 UI 状态管理的设计模式。Event 虽然你可以用 Redux 实现 HTTP 缓存,但这不是它的主要目标(显然你必须实现缓存逻辑,这不是一项简单的任务)。另一方面,React-Query、SWR或Apollo是缓存工具。
推荐阅读
- node.js - 如何在 Docker 容器中访问 Node API
- rets - 如何编写在给定列表中搜索数字的 DMQL 查询?
- java - Hibernate Parent级联删除单向子错误
- python - 我应该在哪里使用 return 语句
- html - 如何使工具提示出现在下方而不是覆盖它?
- python - 检查一个单词是否在元组列表中至少出现两次?
- r - 如何将自定义函数应用于我的数据框的每一列
- angular - 如何为自定义 Angular 验证器提供异步参数
- angular - Typescript 对象动态分配更改字段名称
- python - 如何为用户创建选择某个类别的机会,并打印出结果