swr vs axios 与 setInterval 用于大型 json 数据和 React 中的高频率

Posted

技术标签:

【中文标题】swr vs axios 与 setInterval 用于大型 json 数据和 React 中的高频率【英文标题】:swr vs axios with setInterval for large json data and high frequency in React 【发布时间】:2021-03-17 20:25:21 【问题描述】:

我正在尝试构建一个包含大量 json 数据并每 7 秒发送一次获取请求的应用程序。因此,数据大小和频率都很高。我应该使用swr 还是axios with react hooks and setinterval。我正在使用 ag-grid 和 react-vis 图表来显示数据。

每页有 12 个表格,30-100 行。我担心性能问题。

我是新来的反应。我需要一些建议来决定图书馆。

【问题讨论】:

我对@9​​87654323@ 不熟悉,但从快速阅读来看,它似乎针对这种情况进行了优化,那么为什么更喜欢手动呢?你担心的是,它可能不会是最快的应用程序。虽然有优化的空间(wsr 可能会做一些),例如只发送差异,而不是所有数据,如果你有时间处理它。 感谢@MoshFeu。有没有其他方法可以通过 React 优化此类应用程序? 你可以尝试使用 websockets,所以如果服务器没有任何变化,客户端不会做任何事情。另外,不要一次更新所有的 UI(所以每 3.5 秒只有一半的屏幕会改变) @MoshFeu 谢谢。但后端不使用 websockets,所以这是替代方案。我正在考虑使用角度而不是反应,不确定角度是否会提供更好的性能。 【参考方案1】:

SWR 库不仅仅是轮询。它的主要功能之一是提供缓存失效策略。另外,请求去重、指数回避策略重试,这些功能都是开箱即用的,不建议自己实现。

SWR 先从缓存中返回数据(stale),然后发送 fetch 请求(revalidate),最后再次带上最新数据。

它将为您提供类似 WebSocket 的实时体验。性能问题涉及很多方面,使用WebSocket不一定能得到好的性能,可以试试SWR

更多功能见features和performance

【讨论】:

以上是关于swr vs axios 与 setInterval 用于大型 json 数据和 React 中的高频率的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 swr 编写测试

socket.io vs swr 用于更新实时内容

swr,解决 React 项目 API 调用的最好方案

我如何在 Axios 中传递 cookie

带有graphql-request的SWR如何在swr中添加变量?

「开源摘星计划」华为云SWR镜像同步到Harbor