在angular中使用NGXS状态管理的正确方法

在angular中使用NGXS状态管理的正确方法,angular,state-management,ngxs,Angular,State Management,Ngxs,我是一名BE dev,现在我正在学习Angular 6。我对使用NGX进行状态管理非常感兴趣。我对下面的一个例子有几点担心: 我有一个端点,它返回一组大约16-20k条记录的帐户。当用户打开应用程序并在浏览器上成功登录时,将调用此端点。返回的数据将保存在存储中,并可在应用程序的整个生命周期中使用 通过将数据存储在store中,此列表可以在应用程序中的组件之间共享,包括:按帐户筛选和搜索、更新帐户信息等 此外,我们可以减少api调用的数量来过滤结果(这里可能有更好的方法,请纠正我!),这将改善应用

我是一名BE dev,现在我正在学习Angular 6。我对使用NGX进行状态管理非常感兴趣。我对下面的一个例子有几点担心:

我有一个端点,它返回一组大约16-20k条记录的帐户。当用户打开应用程序并在浏览器上成功登录时,将调用此端点。返回的数据将保存在存储中,并可在应用程序的整个生命周期中使用

通过将数据存储在store中,此列表可以在应用程序中的组件之间共享,包括:按帐户筛选和搜索、更新帐户信息等

此外,我们可以减少api调用的数量来过滤结果(这里可能有更好的方法,请纠正我!),这将改善应用程序的UI/UX

我的问题是:

  • 调用endpoint以获取并保存如此大量的数据以在开始时存储,这是正确的位置吗

  • 在存储器中存储大量数据会提高应用程序的性能吗

  • 我认为这并不是一个很好的方法来获得所有16-20k的帐户,有没有更好的方法呢

  • 安全问题:在商店中存储帐户是否容易被利用

  • 您不应该在开始时调用API来获取大量数据。让你的网站准备好使用需要很多时间,这对用户体验不好

  • 搜索、过滤操作会更快,但开始时的加载时间确实是个问题

  • 在前端存储16-20k条记录不是一个好方法,因为您的帐户数据正在超时更改,每次更新数据库时都需要刷新它

  • 对。浏览器客户端中的存储对于敏感数据不安全

  • 我的建议是:

    • 提供用于过滤和搜索的API,在后端使用分页,使用db索引或辅助存储(如Elasticsearch)来提高搜索性能
    • 使用http请求从后端获取搜索结果
        • 董建华的答案是好的
        • 这里与状态管理无关
        • 当用户打开应用程序时调用一次API可以减少API调用的次数。但这种方法不利于应用程序的性能。例如,当您使用
          访问页面时,选择带有选项的
          帐户列表
          。如果您仍然调用API而不关注或搜索
          Select
          ,这将非常糟糕

        目前我们使用的是规格齐全的纯spring jpa,性能相当不错。唯一的问题是这种方法调用端点的次数太多。我们希望改进,顺便说一句,帐户详细信息没有改变太多:D