2

EmberJS (버전 1.0.0-rc5)를 사용하여 웹 응용 프로그램을 만들었습니다. Chrome에서 성능이 뛰어나다는 것을 안타깝게도 Internet Explorer 7을 주요 플랫폼으로 지원해야합니다.IE7에서 Ember.js 렌더링이 느림

IE7에서의 성능은 끔찍합니다. 이 문제를 조사한 후에는 템플릿 렌더링과 관련이 있습니다 (라우팅 또한 매우 느립니다). 우리가 응용 프로그램을 만든 방식의 실수로 인한 것이거나 Ember에 문제가있는 경우에는 단서가 없습니다.

문제를 재현하기 위해 작은 샘플 앱을 만들었습니다. http://manoswerts.be/playground/ember-performance에서 찾을 수 있습니다. 그것은 우리의 애플 리케이션에서 우리가하는 것과 비슷한 나무를 렌더링합니다. Chrome에서 실행하면 결과가 즉시 표시됩니다. IE7에서는 30 초에서 최대 1 분 정도 걸립니다. IE8에서는 "단지"7 초 걸립니다.

누구에게도 익숙합니까? 이 문제에 대한 해결책이 있습니까?

도움을 주시면 대단히 감사하겠습니다.

+2

Ember가 어떻게 작동하는지 모르지만 모든 li 요소에 이벤트 수신기를 추가하는 것처럼 보입니다. 그게 자발적인가? 이벤트 위임을 사용할 수 없습니까? –

+2

모든 점에서 "우리는 IE7을 지원해야합니다." 사용자가 실제로 IE7에 머물러 있기 때문입니까, 아니면 누군가가 지원 기준으로 지정했기 때문입니까? 요점은 지난 12 개월 동안 IE7 사용량이 절벽에서 떨어 졌다는 것입니다. 실제로 아무도 그것을 사용하고 있지 않습니다. 확실히 자발적으로. 가능하다면, 제 제안은 IE7 지원을 중단하는 것입니다. 왜냐하면 그렇습니다. 그것은 빨기 때문입니다. 그렇습니다. 끔찍한 성능을 가지고 있기 때문입니다. 그러나 무엇보다도 당신이 모든 일을 할 것이고 아무도 실제로 IE7에서 그것을 사용하지 않을 것이기 때문입니다. 얼마나 낭비입니까? – Spudley

+1

80 개 항목을 렌더링하는 데 Chrome에서 200ms가 걸리므로 IE7 지원과 상관없이 문제가됩니다. 아니면 그냥 나입니까? 코어 i5는 여기에 있습니다. – Esailija

답변

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에서 예를 실행할 때 각 인물 템플릿은 렌더링하는데 약 2ms가 걸립니다. 중첩 된 {{each}} 도우미와 관련된 일부 오버 헤드가 있으며 해당 {{each}} 블록 내에 "가상"보기를 렌더링합니다. 총 목록 렌더링 시간은 104ms입니다. 그 총 시간은 Show results 버튼을 쳤을 때 작성된 마지막 console.log 행입니다.

그래서 내가 말한 것에 따르면 총 시간은 ie7 및 ie8의 경우 크기가 더 느릴 것으로 예상됩니다. 그렇다면, 그것이 균등하게 분포되어 있는지 궁금하거나, 더 천천히 렌더링하는 특정 뷰가 있는지 궁금 할 것입니다.

+0

팁 주셔서 감사. 나는 이것을 시험해보고 결과물이 나를 계몽 할 수 있는지 알아 보겠다. Ember가 아닌 네이티브 핸들 바의 중첩 된 {{each}} 블록을 렌더링하는 것이 매우 빠른 것임을 언급하는 것을 잊었습니다. 게다가 뷰는 오버 헤드에 추가되어 받아 들일 수 없게 만듭니다. 시험 결과를 알려 드리겠습니다. –

+0

빠른 업데이트 : Internet Explorer 8을 대상 브라우저로 사용하기 위해 갑자기 녹색 표시등이 나타납니다. 그래서 지금이 문제는 더 이상 우리에게 문제가되지 않습니다. 그러나 나는 여가 시간에 @Mike Grassotti에게 그의 수사 방법을 시험해 보려고 노력할 것이다. –