자바스크립트 앞에 다음 코드를 추가하세요
/*@ cc_on _d=document;eval('var document=_d')@*/
이러한 코드 줄을 추가하면 IE의 문서 액세스 속도를 최소 5배 이상 높일 수 있습니다.
추가 전 다음은 추가된 테스트와 코드 비교
//
var date = new Date
for (var i = 0; i < 100000; i )
alert(new Date - date); / 643
/ *@cc_on _d=document;eval('var document=_d' )@*/
//
날짜 이후 = 새 날짜
for (var i = 0; i < 100000 ; i ) document;
alert(new Date - date) ; // 145
속도가 많이 좋아졌습니다!
설명:
먼저 IE에서 문서를 직접 호출하면 윈도우 객체의 내부 기능이 실행되는데 이는 상대적으로 비효율적이다. 이에 따라 다음 처리를 수행하면 속도가 향상될 수 있습니다.
var doc = document;
document; // 느림
doc; // 위(document)보다 빠릅니다.
위와 같이 바로 사용할 수는 있지만, 이전에 사용했던 문서를 교체하는 것은 약간 번거로운 작업입니다. 그럼 다음을 보세요.
var doc = document;
var document = doc;
구현할 수 있으면 참 좋을텐데...
JavaScript를 아시는 분들은 꼭 알아두세요. 해당 JavaScript는 처음에 변수가 생성되므로 여기서는 문서가 정의되지 않습니다.
상관없어요, 계속 개선하세요~
var doc = document;
eval('var document = doc')
eval의 기능은 이 경우 후속 문서를 정상적으로 사용할 수 있습니다.
마지막으로 다음과 같이 IE에서만 유효한 조건을 추가해 주세요~
/*@cc_on
var doc = document;
eval('var document = doc')
@*/
그리기 한 예제에서 추론을 하고 다음과 같이 작성합니다. 문서 이외의 전역 변수도 위의 방법을 사용하여 프로세스 속도를 높일 수 있습니다.
/*@cc_on
eval( (function( props) {
var code = [];
for (var i = 0 l = props.length;ivar prop = props[i];
window[ '_' prop]=window[prop];
code.push(prop '=_' prop)
}
return 'var ' code.join(','); >}) ('document self top parent Alert setIntervalclearInterval
setTimeoutclearTimeout'.split(' ')))
@*/
다음은 Franky의 답변입니다. :
먼저 IE에서 문서를 직접 호출하면 window 객체의 내부 기능이 실행되는데 이는 상대적으로 비효율적이다. 이 점에 따르면 다음과 같이 처리하면 속도를 향상시킬 수 있습니다.
이 설명은 틀렸습니다..
테스트 전과 후의 차이가 있는 이유는 가장 큰 차이점은
귀하의 코드는 전역 실행 환경에 있으므로 IE에서는 'document' 키를 사용하여 전역 개체에 액세스합니다. 글로벌이 아닌 경우 창에서 다시 검색하면 속도가 느려집니다.
이 문제는 동일한 글로벌 개체에서 발생합니다. 수학은 전역에 있습니다.
최적화를 위해 한 가지 제안은
var win = window, doc = document, undefine입니다. 이 멤버를 두 번 이상 사용하면 의미가 있습니다.
그리고 글로벌 범위에서 ie 조건부 주석을 한 번만 사용하면 우선 ie가 아닌 사용자는 의 이점을 누릴 수 없습니다. 물론, IE가 아닌 사용자는 전역>window에 대한 책임 검색 체인을 하나 이상 갖지 않습니다.
여기서 핵심 최적화는 Opera와 같은 최신 버전이지만 범위 체인을 줄이는 것입니다. Chrome Safari는 범위 체인 검색을 최적화했습니다. 범위 체인을 줄이는 것이 기존 브라우저에 긍정적인 영향을 미칠 것이라고 믿습니다. 그리고 최적화된 브라우저에는 그다지 부정적인 영향을 미치지 않을 것입니다.