我们使用EmberJS (版本1.0.0-rc5)创建了一个web应用程序。我们注意到Chrome的性能很好,不幸的是,我们必须支持Internet Explorer7作为我们的主要平台。
我们注意到IE7上的性能非常糟糕。在研究了这个问题之后,它归结为模板的渲染(尽管路由也非常慢)。我们不知道这是由于我们构建应用程序的方式上的错误,还是Ember的问题。
我创建了一个小示例应用程序来重现这个问题。你可以在http://manoswerts.be/playground/ember-performance上找到它。它渲染一个类似于我们在应用程序中所做的树。在Chrome中运行时,结果会立即显示出来。在IE7中,渲染需要30秒到1分钟。在IE8中,“只”需要7秒。
有人熟悉这个吗?有没有解决这个问题的办法?
任何帮助都是非常感谢的。
发布于 2013-06-20 00:04:17
尝试添加以下内容,以获取有关耗时如此之久的更多详细信息:
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中运行您的示例时,每个person模板大约需要2毫秒的渲染时间。在这些{{each}}块中,还有一些与嵌套{{each}}帮助器和呈现“虚拟”视图相关的开销。总的列表渲染时间是104ms。该总时间将是您点击Show results按钮后编写的最后一行console.log代码。
因此,根据您所说的,我预计ie7和ie8的总时间会慢一个数量级。如果是这样的话,想知道它是均匀分布的,还是有一个呈现速度慢得多的特定视图。
发布于 2013-07-08 13:34:07
https://stackoverflow.com/questions/17193817
复制相似问题