在我目前的工作中,我遇到了一个问题,应用程序似乎发出了一些额外的请求,我认为这些请求是可以避免的,并且应用程序已针对更好的性能进行了优化。
我们的技术堆栈是:Typescript + React + Redux(常规的,不是 Redux-Toolkit)
我希望得到以下结果:
相同的依赖值不应导致页面重新渲染并向后端发出新请求
当用户在应用程序的页面之间切换时,每次打开此页面时都会返回到先前打开的页面,从而发出一组完整的相同请求。
对于(1)问题,据我所知,我可以使用 useMemo 和 useCallback 进行一些优化,但是尝试为(2)问题找到合适的解决方案我遇到了各种各样的选择:从手动设置一些逻辑或使用一些包装器在浏览器中使用 Session Storage 或 IndexedDB 创建缓存,到诸如 Redux-Toolkit + RTK Query 等解决方案,< strong>React Query、SWR、Redux-Persist 等
您建议我采用什么方法?我想说,我知道它需要对代码和重构进行相当大的更改,因此,只要它们更具长期可持续性且更易于重用,即使更复杂的解决方案也非常适合。
据我了解,Redux-Toolkit + RTK Query 和 React Query 完全可以用于缓存且高度可持续,这是正确的吗?这两个选项中哪一个是推荐选项?
使用 Redux-Persist 之类的东西就足够了吗?据我了解,它允许缓存到 session 存储,就我而言,这很可能是我所需要的。只要在浏览器中打开页面并且没有更改依赖项,就应该保留状态。
最佳答案
应用程序将在必要时发出请求,缓存不会阻止这一点,它只是通过提供本地存储的数据来加快速度。
无需通过 redux 或工具包获取缓存,它只是一个可预测的状态管理器。
使用像rtk query、react query这样强大的数据获取工具会有所帮助,提供强大的缓存管理。
手动缓存很难处理。 session 存储缓存必须缩小、加密,并且需要大量的缓存清除和更新。
关于javascript - react : What would be a recommended way to cache state of the app in the browser to minimize the amount of requests to the backend?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74106220/