性能调整淘汰赛应用程序 – 改进响应时间的指导方针

我有一个庞大而复杂的页面,严重依赖于knockout.js。 性能开始成为一个问题,但考察调用堆栈并试图find瓶颈是一个真正的挑战。

我注意到另一个问题( Knockout.js – 理解foreach和 ),接受的答案有评论:

…我build议不要使用高性能是必要的,因为开销…

假设声明是真实的,这是真正有用的东西知道,我还没有find这样的性能提示的来源。

所以我的问题是:

在进行经典的性能调优之前,是否可以使用一般准则/重要提示来帮助我的应用程序的性能?

我认为在一个答案中布置我想到的提示太多了。

我开始了一系列有关这个话题的博客文章。 第一篇文章就在这里 。

这篇文章描述了如何if/with如何工作(复制孩子作为其模板,并在绑定被触发时使用模板重新呈现),并解释这些绑定如何导致重新呈现比预期更频繁。

我将更新这个答案与未来的职位。

我发现的最大问题之一(在其他地方没有讨论),Knockout 只要元素上的绑定发生变化 ,就重新评估元素上的每一个绑定

这通常不是什么大问题,但对于价格昂贵的绑定(例如template )来说,可能会造成严重的性能问题。

如果它们不是元素上的唯一绑定,则将绑定呈现给内容/子项( templateforeach等)到虚拟元素(使用无容器控制stream语法 )。

我想映射也可以帮助你也可以按照这个testing,看看使用jquert地图,淘汰赛地图knockout-map-vs-jquery-map

当你开始大量使用ObservableArrays映射变得至关重要