性能调整淘汰赛应用程序 – 改进响应时间的指导方针
我有一个庞大而复杂的页面,严重依赖于knockout.js。 性能开始成为一个问题,但考察调用堆栈并试图find瓶颈是一个真正的挑战。
我注意到另一个问题( Knockout.js – 理解foreach和 ),接受的答案有评论:
…我build议不要使用高性能是必要的,因为开销…
假设声明是真实的,这是真正有用的东西知道,我还没有find这样的性能提示的来源。
所以我的问题是:
在进行经典的性能调优之前,是否可以使用一般准则/重要提示来帮助我的应用程序的性能?
我认为在一个答案中布置我想到的提示太多了。
我开始了一系列有关这个话题的博客文章。 第一篇文章就在这里 。
这篇文章描述了如何if/with
如何工作(复制孩子作为其模板,并在绑定被触发时使用模板重新呈现),并解释这些绑定如何导致重新呈现比预期更频繁。
我将更新这个答案与未来的职位。
我发现的最大问题之一(在其他地方没有讨论),Knockout 只要元素上的绑定发生变化 ,就重新评估元素上的每一个绑定 。
这通常不是什么大问题,但对于价格昂贵的绑定(例如template
)来说,可能会造成严重的性能问题。
如果它们不是元素上的唯一绑定,则将绑定呈现给内容/子项( template
, foreach
等)到虚拟元素(使用无容器控制stream语法 )。
我想映射也可以帮助你也可以按照这个testing,看看使用jquert地图,淘汰赛地图knockout-map-vs-jquery-map
当你开始大量使用ObservableArrays映射变得至关重要