Knockout notifySubscribers + Durandal =快速降低性能?

时间:2013-08-10 17:39:35

标签: knockout.js single-page-application durandal

我使用DurandalJS构建了一个应用程序 - 虽然我不知道框架是否与此相关。在Firefox和Chrome中,如果我点击深蓝色框(文件夹),性能会迅速降低,我不知道为什么。我点击的每个新文件夹都需要更长时间才能打开 - 我可以看到它在打开大约20-30个文件夹后发生。

这些文件夹未被缓存,应该基于单例viewModel:

define(['services/dataservice', 'durandal/plugins/router', 'durandal/app', 'services/hub', 'viewmodels/setVm', 'viewmodels/folderVm'],
    function (dataservice, router, app, hub, SetViewModel, FolderViewModel) {
    // define vm
    return vm;
}

在FF Profiler中,我看到类似这样的内容:

enter image description here

我不确定这对于那些更熟悉分析的人是否有意义,但我不能为我的生活找出为什么会出现这种性能下降。

chrome中的内存配置文件显示最大内存消耗约为45 MB,但我必须等待页面绘制的时间会逐渐变差。

现场网站在这里:

www.nogginator.com

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:6)

所以问题最终导致shell视图模型中有太多东西,阻止垃圾收集回收它。将其拆分成几个部分会对性能产生重大影响。

Shell分为

  • authentication服务
  • sidebar viewmodel
  • menu viewmodel
  • 某些路由器配置