我们正在为我们为一家银行建立的Angular应用程序打击我们的性能问题。
不幸的是,这是违反合同显示代码片段。无论如何,我可以描述一些主要的问题,我希望可以推荐最佳实践。
应用结构:
>本质上,一个巨大的多形式页面。
>每个表单是它自己的部分,与嵌套的控制器和partials约3级深。
>相同的形式在一个json对象的集合上重复。
>每个表单都绑定到被重复的对象/模型。
>我们应该支持页面上的1-200种表单。
如果你看看时间轴。我们花了大量的时间在jQuery中解析html方法,jQuery重新计算stye方法,GC事件(垃圾收集)。我想象最小化这些应该加快一点。它们都是Angular生命周期的一部分,但可能有更好的方法来避免它们。这里有一些截图的截图:
解决方法
您需要创建自定义指令,以遏制与角度的性能问题。不像余烬有来自所有的钟声和哨声打开,它是由你来调低它。这里有一些我创建帮助你的指令。并非您应用中的所有数据都需要双向数据绑定,因此您可以通过在需要的页面中放弃观察表达式来节省宝贵的cpu资源。所有这些指令将数据绑定一次,并保留。
https://gist.github.com/btm1/6802599
https://gist.github.com/btm1/6802312
https://gist.github.com/btm1/6746150
上面的答案之一谈到ng-repeat有巨大的性能命中,所以我给你“set-repeat”一次性数据绑定重复指令:)