【发布时间】:2016-08-14 13:04:21
【问题描述】:
我正在从事一个严重依赖 Angular 来完成前端任务的项目。在一个显示大约 50 个带有 ng-repeat 的条目的列表页面上,每个条目都有很多观察者,所以我决定使用 angular 的静态绑定减少观察者的数量,并且能够减少数量。从 12k 观察者到 8k 观察者,但即使观察者大幅减少,加载时间、dom 渲染或摘要循环时间也没有改善。 8k 观察者的摘要周期与 12k 观察者所花费的时间几乎相同或多一点,因此似乎 angular 的 1 次绑定在这里没有帮助。我使用了 chrome 的角度扩展batarang 和库ng-stats。我想到的问题是:
1)为什么静态绑定/单向绑定不提高性能?
2) 减少数量。的观察者应该减少摘要周期并加快内容加载时间?
3)在这种情况下,还有其他加快速度的技巧吗? (除了资产缩小)。
【问题讨论】:
-
8k 观察者? 8000?这些是很多观察者。设计有问题。您的页面加载时间是多少?
-
您可以通过为“父级”设置 1 个侦听器并通过
event.target识别单击的列表项来减少侦听器,而不是为列表中的每个项目设置点击侦听器。检查此链接以供参考:kirupa.com/html5/handling_events_for_many_elements.htm -
你最初的观察者仍然是 12k 并且有一次绑定,但是当你在 batarang 或 ng-stats 中看到它时,那些 4k 已经在这些统计数据收集时消失了,所以你不会得到性能从中受益。
-
@RahulB 是的,我正在尝试减少它们。
-
@YOU batarang 统计数据令人困惑,但 ng-stats 更好。实际上 ng-stats 显示的是不断更新的图表,所以它一直保持在 8k。
标签: javascript angularjs performance