【问题标题】:AngularJS: Load all data at once as JSON vs. using a database and only load parts. What is better?AngularJS:以 JSON 格式一次加载所有数据,而不是使用数据库,只加载部分数据。什么是更好的?
【发布时间】:2015-05-28 09:42:09
【问题描述】:

我必须在网页上显示存储在 ERP 中的产品。 ERP 可以生成包含所有产品的 XML 或 JSON 文件。网页需要分页、排序或按属性过滤等功能。目前我认为最简单的方法是在 AngularJS 中加载整个文件,然后遍历所有项目并使用它。产品数量限制在〜500。我认为这是最简单的原因是因为客户端每天都会以这种方式更改信息,我不必为数据库编写导入/同步过程。

但我有点担心性能。排序、过滤、分页等都是数据库非常快的事情(可能是 MongoDB,因为数据结构非常简单)。

我会遇到严重的性能问题吗?这是可行的吗?或者我应该在 ERP 和前端之间放置一个数据库来完成繁重的工作?

【问题讨论】:

    标签: javascript json angularjs mongodb


    【解决方案1】:

    唯一确定的方法是自己测试一下,这就是我会做的。答案通常是“这取决于..”。您说它大约有 500 种产品,如果每个产品只有一个产品名称,那么数据库将是矫枉过正。 Angular 对这个数量非常满意。但是,如果每个产品都有大量的属性和嵌套数据,那么文件本身可能会非常大,甚至在每次页面加载时都无法加载。所以,这取决于..

    我愿意这样做:

    • 将文件从 ERP 导出为 JSON
    • 创建样板 Angular 应用程序
    • 将 JSON 文件作为资源文件
    • 创建一个简单的转发器并将这些对象扔到 DOM 中

    现在您可以轻松地尝试过滤、排序、分页等。测试浏览器性能和加载时间是否符合您的要求。

    【讨论】:

      【解决方案2】:

      我认为数据传输不会出现性能问题,因为 JSON 文件中只有 500 个元素。但也许你会在用 AngularJS 显示这 500 个元素时尝试性能问题。

      您可以使用 AngularJS 签出“无限滚动”而不是分页,这是一个很好的结果显示性能解决方案。查看这篇文章:http://www.williambrownstreet.net/blog/2013/07/angularjs-my-solution-to-the-ng-repeat-performance-problem/

      不,我不同意中间有一个数据库。您正在尝试将其用作缓存,但您会遇到比解决方案更多的问题,因为由于您只有 500 个元素,您根本不会获得性能。还有另一个问题:数据库维护;)

      干杯

      【讨论】:

      • 我有一个示例文件,它大约 2MB 大。因此,如果我在每个页面加载时都加载它,这可能是一个性能问题。但是感谢您的链接,我会检查一下!
      • 您绝对不应该在每次页面加载时加载 2MB。而不是在中间有一个数据库,您可以将您的 JSON 作为资源下载,并进行批处理,将您的“缓存”JSON 与 ERP JSON 进行比较,前提是信息发生了很大变化。然后,您的 Angular 应用程序将使用您的“缓存”JSON。使用此解决方案,您不能确定您的信息是 100% 最新的,但您会在性能上获胜。还有其他解决方案,例如中间的 Web 服务和异步通信(例如使用 JMS),但这些是更复杂的解决方案。干杯!
      猜你喜欢
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多