缓存和redux有啥区别
Posted
技术标签:
【中文标题】缓存和redux有啥区别【英文标题】:What is the difference between caching and redux缓存和redux有什么区别 【发布时间】:2021-04-28 16:17:43 【问题描述】:我想知道 redux 或上下文或任何类型的应用程序状态存储与客户端缓存之间有什么区别,具体示例为 Apollo's client side cache。
我一般从this answer 了解到,应用程序状态存储,例如 redux 或 context,是一种缓存形式,它的作用是缓存,或者在这种情况下,“存储”信息在 RAM 中。是什么让像 Apollo 的客户端缓存这样的东西与众不同?它是一样的,只是像使用 redux 一样存储数据,还是做一些不同的事情?谢谢。
【问题讨论】:
【参考方案1】: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、SWR 或 Apollo 是缓存工具。
【讨论】:
除此之外,redux 只是 任何 种应用程序状态的存储。不仅缓存。用户是否登录?他们的语言是什么?应用程序的主题是浅色主题还是深色主题?所有这些都是应用程序状态。它可用于缓存状态,但您必须为此手动做一些工作。好处是你也可以用它来做很多其他的事情。 Redux 与其说是库,不如说是一种模式。 那么像 Apollo 或 React Query 这样的库是 HTTP 缓存工具,但也提供客户端存储? 它们提供了访问请求响应(以及状态、错误...)的方法,但不是像本地存储这样的持久存储。但是是的,以 react-query 为例,数据存储在钩子状态中,因此浏览器内存,如 redux 存储、组件状态或反应上下文(这里没什么花哨的,重要的是巧妙地处理服务器数据)以上是关于缓存和redux有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
IIS(动态和静态)缓存、OutPutCache 和浏览器缓存有啥区别
Ehcache中的“缓存未命中”和“内存缓存未命中”有啥区别?
QWebkit QWebSettings 缓存和 QNetworkManager QNetworkDiskCache 有啥区别?