【发布时间】:2013-07-13 10:40:33
【问题描述】:
我们正在为我们为银行构建的 Angular 应用程序的性能问题而努力。
很遗憾,显示代码的sn-ps是违约行为。无论如何,我可以描述一些正在发生的主要问题,我希望可以推荐最佳做法。
应用结构:
- 本质上是一个巨大的多表单页面。
- 每个表单都有自己的部分,嵌套控制器和部分大约 3 层深。
- 相同的表单在 json 对象集合上重复。
- 每个表单都绑定到它所重复的对象/模型。
- 我们应该支持页面上 1-200 个表单。
如果你看一下时间线。我们在 jQuery parse html 方法、jQuery recalculate stye 方法、GC Event (Garbage Collection) 上花费了大量时间。我想最小化这些应该会加快速度。它们都是 Angular 生命周期的一部分,但可能有更好的方法来避免它们。以下是分析器的一些屏幕截图:
最终,由于重复表单的数量超过 5 个,应用程序变得迟缓。每个表单与其他表单相对无关。我们已尝试不查看表单之间的任何共享属性。
【问题讨论】:
-
问题是……?
-
您是否尝试过将此函数调用追溯到您自己的代码库(或调用它的角度?)@Stewie 我相信问题(尽管有些编纂)是一般性能瓶- 可能出现在 AngularJS 应用程序中的脖子?应该如何进行性能/优化?我相信 chrome 的 Batarang 插件有一些性能方面的东西(刚刚检查过,虽然我没有使用过,但确实有一个性能选项卡,它可能会有所帮助)。
-
“AngularJS 应用程序中可能出现的一般性能瓶颈是什么?”与任何 javascript 应用程序相同的瓶颈,您创建的对象越多,GC 的时间就越长。 HTML5rocks 网站上有很好的资源。
-
@mpm 我想你也会遇到问题,尽管通过使用 $emit/$broadcast 未经检查的方式创建冒泡的事件。我的意思是是的,您所说的通常仍然是许多正在创建的对象/被调用的函数的问题,同样的一般问题,但是如果没有程序员控制的事件总线,您通常不会在 Angular 之外的 JS 中遇到这种情况。
-
你能模拟一个 jsfiddle 或 plnkr 吗?我知道你不能分享你的客户代码,但模仿结构应该不会太难,这样我们就可以更好地了解你是如何实现的。
标签: html performance angularjs angularjs-scope angularjs-ng-repeat