angular - 存储与随时随地提出请求
问题描述
我正在我的门户中实现一个用于问答的 api,现在我有 2 个选项:
- 对 html 上的类别进行硬编码,只有当类别组件打开时(该组件将是一个扩展面板),才会从 api 加载问题,也使用请求按关键字进行搜索;
- 从一开始就从 api 中获取所有问题及其类别,并将其放入 rxjs 商店,列出并在组件中制作搜索机制;
那些女巫的性能会更好,为什么?
解决方案
这两个选项都可能有效,具体取决于您获取的数据量。
- 对 html 上的类别进行硬编码,只有在打开类别组件(该组件将是一个扩展面板)时,才会从 api 加载问题,也使用请求按关键字进行搜索;
类别不必硬编码;可以从远程存储中检索它们以填充到您的页面中。但是无论您是否对类别进行硬编码,加载类别的扩展问题(延迟加载)都是一个好策略。此外,每个类别加载大量问题时,您可以实现分页或虚拟滚动来解决性能问题。总之,结合延迟加载和分页(或虚拟滚动)策略应该对性能有很好的影响。最重要的是,您的搜索 api 也应该表现良好(因为它会过滤掉来自其他类别和当前类别内其他页面的问题。
- 从一开始就从 api 中获取所有问题及其类别,并将其放入 rxjs 商店,列出并在组件中制作搜索机制;
不需要存储在 rxjs 的商店中,因为您的问题的状态不会改变。一项服务可能就足够了。至于性能,加载很多问题可能会导致性能不佳。但更重要的是,这样的策略会让你的应用程序“冻结”(至少在下次客户端刷新浏览器之前)。
推荐阅读
- java - JavaFX:自定义组件仅在 Runnable JAR 中引发 LoadException
- r - 使用汇总方法从 geom_abline() 获取平均截距和斜率
- python - 为什么这个列表减法循环不会同时删除 b 和 c?
- mysql - 将 MySQL 表列类型从 INT 更改为 BIGINT
- go - 文件被复制到根目录以及目标目录
- c# - 如何在 C# 中的另一列条件下对 DatagridView 中的数据求和?
- javascript - 如何在反应中使用上下文在类和功能组件之间共享状态?
- python - 我需要“如果”一次但不结束循环
- system-verilog - 如何删除 if 语句中的重复代码
- cognos - 在 IBM Cognos Analytics 中找不到 Report studio