性能调整淘汰应用程序 - 改善响应时间的指南

时间:2012-03-29 14:17:26

标签: knockout.js performance knockout-mapping-plugin

我有一个庞大而复杂的页面,它非常依赖于knockout.js。性能开始成为一个问题,但检查调用堆栈并试图找到瓶颈是一个真正的挑战。

我在另一个问题(Knockout.js -- understanding foreach and with)中注意到接受的答案有评论:

  

......我建议不要使用需要高性能的with   因为开销......

假设该陈述是真的,这是非常有用的知识,我没有找到这些性能提示的来源。

因此,我的问题是:

在深入了解经典性能调整之前,是否有适用于帮助我的应用程序性能的一般指南/重要提示。

3 个答案:

答案 0 :(得分:37)

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

我开始撰写关于此主题的一系列博客文章。第一篇文章是here

这篇文章描述了if/with如何工作(将子项复制为模板并在触发绑定时使用模板重新渲染)并解释了这些绑定如何导致重新渲染的频率高于预期。

我将在以后的帖子中更新此答案。

答案 1 :(得分:6)

我发现的最大问题之一(并且在其他地方没有讨论过)是Knockout 每当任何绑定时重新评估元素上的每个绑定关于元素的变化

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

将内容/子项(templateforeach等)的绑定附加到虚拟元素(使用containerless control flow syntax),如果它们不是元素的唯一绑定。

答案 2 :(得分:0)

我认为地图也有帮助,你可以按照这个测试看看使用jquert map,knockout map knockout-map-vs-jquery-map

之间的区别

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