IE 7中的Ember.js渲染速度很慢

时间:2013-06-19 14:23:23

标签: javascript performance internet-explorer ember.js internet-explorer-7

我们使用EmberJS(版本1.0.0-rc5)创建了一个Web应用程序。我们注意到Chrome的出色表现,遗憾的是我们必须支持Internet Explorer 7作为我们的主要平台。

我们注意到IE7的性能非常糟糕。在调查问题后,它归结为模板的渲染(尽管路由也非常慢)。如果这是由于我们构建应用程序的方式错误或者这是Ember的问题,我们不知道。

我创建了一个小样本应用来重现问题。您可以在http://manoswerts.be/playground/ember-performance找到它。它呈现的树类似于我们在应用程序中执行的操作。在Chrome中运行时,结果会立即显示。在IE7中,渲染需要30秒到一分钟。在IE8中,“仅”需要7秒钟。

有人熟悉这个吗?这个问题有解决方案吗?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

尝试添加以下内容以获取更长时间的详细信息:

Ember.subscribe('render', {
  before: function(name, start, payload){
    return start;
  },
  after: function(name, end, payload, start){
    var duration = Math.round(end - start);
    var template = payload.template || '';
    //console.log(Ember.inspect(payload));
    //var title;
    var view = payload.object.toString();
    console.log('rendered', template, view, 'took', duration, 'ms');
  }
});

这将为您呈现每个渲染的视图提供时间。当我在Chrome中运行您的示例时,每个人模板都需要大约2毫秒来渲染。还有一些与嵌套{{each}}帮助程序相关的开销,并在这些{{each}}块中呈现“虚拟”视图。列表渲染时间总共为104毫秒。总时间将是您点击Show results按钮后写入的最后一个console.log行。

因此,基于你所说的话,我希望ie7和ie8的总时间要慢一个数量级。如果是这种情况,想知道它是否均匀分布,或者是否有特定的视图呈现得慢得多。

答案 1 :(得分:0)

对于IE7和IE8,我需要大约4-5秒的时间。

其他ember js示例应用

https://github.com/dgeb/ember_data_example

根本不使用IE7。