ホームページ > ウェブフロントエンド > jsチュートリアル > IE の Javascript ドキュメントの出力を高速化する方法_javascript スキル

IE の Javascript ドキュメントの出力を高速化する方法_javascript スキル

WBOY
リリース: 2016-05-16 18:14:48
オリジナル
1000 人が閲覧しました

JavaScript の先頭に次のコードを追加します

コードをコピーします コードは次のとおりです:

>/*@ cc_on _d=document;eval('var document=_d')@*/

このようなコード行を追加すると、IE のドキュメント アクセス速度が少なくとも 5 倍向上します。
以下は追加前です 追加したテストとコードを比較します
コードをコピーします コードは次のとおりです:

//
var date = new Date
for (var i = 0; i alert(new Date - date); / 643

コードをコピー コードは次のとおりです:

/ *@cc_on _d=document;eval('var document=_d' )@*/

//
date = new Date
for (var i = 0; i alert(new Date - date) ; // 145

速度が大幅に向上しました。

説明:
まず、IE でドキュメントを直接呼び出すと、ウィンドウ オブジェクトの内部関数が実行され、これは比較的非効率です。これによると、次の処理により速度が向上します。
var doc = document;

document; // 上記 (document) よりも高速です。
上に書いたようにそのまま使うこともできますが、前に使っていたドキュメントを差し替えるのが少し面倒です。したがって、次を見てください:
var doc = document;
var document = doc;
JavaScript を知っている人は知っているはずです。そのJavaScript 変数は最初に生成されるので、ここのドキュメントは未定義になります。
関係ありません、改善を続けてください~
var doc = document;
eval('var document = doc');

eval の機能は、この場合、後続のドキュメントは正常に使用できます。
最後に、次のように IE でのみ有効な条件を追加します~




コードをコピー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 topparentalert setIntervalclearInterval
setTimeoutclearTimeout'.split(' ')));
@*/



以下はフランキーの返信です:

まず、IE でドキュメントを直接呼び出すと、ウィンドウ オブジェクトの内部関数が実行され、これは比較的非効率です。この点によれば、次の処理により速度が向上する可能性があります。

この記述は間違っています。
テスト前とテスト後の間に違いがある理由は、主な違いは次のとおりです。
あなたのコードはグローバル実行環境にあります。そのため、IE では、このオブジェクトは、キー「ドキュメント」を持つグローバル オブジェクトにアクセスします。グローバルにない場合は、ウィンドウ内で再度検索すると速度が低下します。

同じグローバル オブジェクトではこの問題は発生しません。 Math は Global にあります。

最適化のための 1 つの提案は、
var win = window, doc = document,
スコープの各レベル内です。このメンバーが 2 回以上使用される場合、意味があります。

また、グローバル スコープ内で ie 条件付きコメントを 1 回しか使用しない場合、まず、ie 以外のユーザーはその利点を享受できません。もちろん、IE 以外のユーザーには、グローバル->ウィンドウの責任の連鎖がもう 1 つありません。ただし、Opera などの新しいバージョンでは、最適化の中心となるのは、スコープの連鎖を短縮することです。 Chrome Safari はスコープ チェーン検索を最適化しています。スコープ チェーンを短くすることは古いブラウザにプラスの効果をもたらし、最適化されたブラウザにはそれほどマイナスの影響を及ぼさないと考えています。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート