有没有比 redux persist 更好的方法来为生产环境持久化 redux 状态数据

Posted

技术标签:

【中文标题】有没有比 redux persist 更好的方法来为生产环境持久化 redux 状态数据【英文标题】:Is there a better way to persist redux state data for a production environment than redux persist 【发布时间】:2021-03-24 16:47:29 【问题描述】:

Redux persist 一直是保存必要的 redux 状态值的好工具,但感觉它并不是生产应用程序的最理想设置。我可能弄错了,但我想我正在设想使用 redis 将状态和会话 id 值保存在 cookie 中以检索它并根据需要手动补水(?)。

我已经在我的应用程序中设置了 redis,我只是不确定下一步是如何将我的持久化 redux 存储从由 redux persist 保存在 localStorage 中保存到 redis 中并手动检索它。

这有意义吗?有没有人有任何参考或信息可以用来实现这一目标?

【问题讨论】:

【参考方案1】:

在浏览器中存储数据有三个选项:cookie、Web Storsge API(本地/会话存储)和 IndexDB。

当您需要将数据发送到服务器时,通常应该使用 Cookie,因为它们会在每次请求时发送。 cookie 的最大存储大小为 4kb。

本地和会话存储最多可存储 5mb,使其成为合适的存储引擎。

Cookies和Storage只能存储字符串,需要你序列化和非强数据。

IndexDB 允许您本地存储字符串、对象、日期等。它的 API 可以说是更底层且使用复杂。 PouchDB 被创建为一种抽象,以使其更易于使用;他们是其他库,但这可以说是最受欢迎的。

回想一下您是否适合在生产应用程序中使用,使用 localStorage 没有任何问题,因为它确实是您的主要选择。请注意考虑隐私和安全问题(即所有运行的 JS 都可以访问 localStorage,使您存储在那里的任何数据也容易受到 XSS 攻击。这不是不使用它的理由,只是您需要注意的事情)。

【讨论】:

以上是关于有没有比 redux persist 更好的方法来为生产环境持久化 redux 状态数据的主要内容,如果未能解决你的问题,请参考以下文章

Redux-persist 没有更新状态

无法使用react-native app中的redux-persist检查索引/主文件上是否已加载持久状态

如何在 React 和 Redux 中保持用户登录,使用 JWT 表达后端应用程序并且没有像 redux-persist 这样的包?

如何防止 redux-persist 在用户允许之前使用 LocalStorage?

使用 redux-persist 持久化嵌套状态对象

将 redux-persist 与路由反应