问题描述
我是一名BE开发人员,现在我正在学习Angular6。我对使用NGXS进行状态管理非常感兴趣。我对以下示例有一些担忧:
我有一个端点,该端点返回一组大约16-20k的帐户记录。当用户打开应用程序并成功浏览器登录时,将调用此端点。返回的数据将保存在存储中,并可以在应用程序的整个生命周期中使用。
通过将数据存储在存储中,可以在应用程序的各个组件之间共享此列表,包括:按帐户过滤和搜索,更新帐户信息等。
此外,我们可以减少用于过滤结果的api调用次数(也许这里有更好的方法,请纠正我!),这将改善应用程序的UI / UX。
我的问题是:
-
是否将大量数据存储在存储中会提高应用程序的性能?
-
安全问题:在商店中存储帐户是否容易被利用?
解决方法
- 董的答案是好的。
- 这里与状态管理无关。
- 用户打开应用程序一次调用API可以减少API调用次数。但是这种方法不利于应用程序的性能。例如,当您使用
Select
来访问页面时,上面列出的选项是accounts
的列表。如果您仍然不关注或搜索Select
而仍然调用API,则非常糟糕。
-
您不应该在开始时调用API来获取大量数据。要使您的网站准备就绪,并且不适合UX,需要花费很多时间。
-
搜索,过滤动作会更快,但是开始时的加载时间确实是个问题。
-
在前端存储16-20k条记录不是一个好方法,因为您的帐户数据会随着时间变化,并且每次数据库更新时都需要刷新。
-
是的。浏览器客户端中的存储对于敏感数据是不安全的。
我的建议:
- 提供了用于在后端使用分页进行过滤和搜索的API,使用db索引或诸如Elasticsearch之类的二级存储来提高搜索性能。
- 使用http请求从后端获取搜索结果