jQuery のパフォーマンスを最適化するために学ぶべき 28 の提案_jquery
jQuery パフォーマンスの最適化に関する 28 の提案 私は肥大化した動的 Web アプリケーションを軽量化するために、jQuery のパフォーマンス最適化に関するヒントを探してきました。多くの記事を検索した結果、パフォーマンスを最適化するために最も一般的に使用される最良の提案をいくつかリストすることにしました。また、印刷したりデスクトップの背景として設定できる、jQuery のパフォーマンスに最適化された簡潔なスタイルシートも作成しました。
1. セレクターのパフォーマンス最適化に関する提案
1. 常に #id セレクターから継承します
これは、jQuery セレクターの黄金律です。 jQuery で要素を選択する最も速い方法は、ID で要素を選択することです。
$('#content').hide ();
または、ID セレクターから継承して複数の要素を選択します:
$('#content p').hide();
2. クラス
の前にタグを使用します。 jQuery のセレクターは、ネイティブ Javascript メソッド getElementByTagName() から直接取得されるため、タグ セレクター ($('head') など) です。したがって、クラスを変更するには常にタグを使用することをお勧めします (最も近い ID を忘れないでください)
var acceptNewsletter = $('#nslForm input.on');
jQuery のクラス セレクターは、IE ブラウザーでトラバースするため、最も遅くなります。すべての DOM ノード。クラスセレクターの使用は避けてください。 ID の変更にもタグを使用しないでください。次の例では、すべての div 要素を走査して、ID が「content」のノードを見つけます:
var content = $('div#content'); // 非常に遅いので使用しないでください
ID を使用して ID を変更するのは不要です:
var Traffic_light = $('#content #traffic_light' ); // 非常に遅いため、
を使用しないでください。 3. 将来の使用のために親オブジェクトをキャッシュするために
var menu = header.find('.menu' );
// または
var menu = $('.menu', header);
の代わりに
.find() 関数は確かに高速です。ただし、ページに多くの DOM ノードがある場合は、前後の検索にさらに時間がかかることがあります。
コードをコピー
6. jQuery のチェーン操作を使用した型操作
は、セレクターをキャッシュするより効率的です:
コードをコピー
$('li.menu-item').click(function () {alert('テストクリック');})
.css('display', 'block')
.css('color', 'red')
fadeTo(2, 0.7);
7. コード内でセレクターを頻繁に使用する場合は、拡張します。 jQuery の $.expr[':'] オブジェクトを使用して、独自のセレクターを作成します。次の例では、非表示の要素を選択するためのアバブザフォールドセレクターを作成しました:
abovethefold: function(el) {
return $(el).offset().top < $ (ウィンドウ) .scrollTop() $(window).height();
}
});
var nonVisibleElements = $('div:abovethefold'); // 要素を選択します
2. DOM 操作を最適化するための提案 8. jQuery オブジェクトをキャッシュする
頻繁に使用する要素をキャッシュします:
var divs = header.find('div'); >var Forms = header.find('form');
9. DOM 挿入を実行する場合、すべての要素を 1 つの要素にカプセル化します
- ';
- ' i ' '; 🎜>menu = '';
- ' i ' ');
メニュー = '
$('#header').prepend(menu);
// これは絶対に行わないでください:
$('#header').prepend( ' ');
for (var i = 1; i $('#menu').append( '
}
10. jQuery は例外をスローしませんが、
例外の数はユーザーにスローされませんが、開発者はこれに依存しないでください。 jQuery は通常、オブジェクトが存在するかどうかを判断する前に、無駄な関数を多数実行します。したがって、オブジェクトへの一連の参照を行う前に、まずそのオブジェクトが存在するかどうかを確認する必要があります。
11. 同等の関数の代わりに直接関数を使用する
12. 後で使用するために jQuery の結果をキャッシュする
多くの場合、JavaScript アプリケーション オブジェクトを取得します。App を使用して、頻繁に選択するオブジェクトを保存できます。
コードをコピーします
13. jQuery の内部関数 data() を使用して状態を保存します
を使用することを忘れないでください。情報を保存する .data() 関数:
コードをコピー
14. jQuery ユーティリティ関数を使用する
シンプルで実用的な jQuery ユーティリティ関数を忘れないでください。私のお気に入りは $.isFunction()、$isArray()、$.each() です。
15. HTML ブロックに「JS」クラスを追加します。
jQuery が読み込まれたら、まず HTML に「JS」というクラスを追加します。
コピーコード
コードをコピー
JavaScript が有効になっている場合は、HTML コンテンツ全体を非表示にし、jQuery を使用して目的のことを実現できます (たとえば、ユーザーがパネルをクリックしたときに特定のパネルを折りたたんだり展開したりするなど)。 Javascript が有効になっていない場合、ブラウザはすべてのコンテンツをレンダリングし、検索エンジン クローラーもすべてのコンテンツを削除します。今後はこのテクニックをもっと活用していきたいと思います。
3. イベントのパフォーマンスの最適化に関する提案
16. $(window).load に従う
$(document) の代わりに $(window).load() が使用される場合があります。 ready() は、すべての DOM 要素がダウンロードされるまで待機しないため、高速です。使用する前にテストする必要があります。
17. イベント委任を使用する
コンテナ内に多数のノードがあり、イベントをすべてのノードにバインドしたい場合、委任はそのようなアプリケーション シナリオに非常に適しています。委任を使用すると、親でイベントをバインドし、どの子ノード (ターゲット ノード) がイベントをトリガーしたかを確認するだけで済みます。これは、大量のデータを含むテーブルがあり、td ノードにイベントを設定したい場合に非常に便利です。まずテーブルを取得し、次にすべての td ノードの委任イベントを設定します。
$("テーブル").delegate("td", "hover", function(){
$(this).toggleClass("hover");
}); >
js プラグインを圧縮してすべてのバイトを保存したい場合は、$(document).onready() の使用を避けるべきです
$(document).ready(function) は使用しません。 (){
// コード
});
$(function (){
// コード
}); >
4. jQuery のテスト
19. jQuery 単体テスト JavaScript コードをテストする最良の方法は、人にテストしてもらうことです。ただし、Selenium、Funcunit、QUIT、QMock などの自動化ツールを使用して、コード (特にプラグイン) をテストできます。この件については言いたいことがたくさんあるので別のトピックで取り上げたいと思います。 20. jQuery コードを標準化する
コードを頻繁に標準化し、どのクエリが遅いかを確認し、置き換えます。 Firebug コンソールを使用できます。 jQuery のショートカット関数を使用してテストを容易にすることもできます:
コードをコピーします>
最新バージョン 多くの場合、最高です。バージョンを変更した後は、必ずコードをテストしてください。完全な下位互換性がない場合もあります。
22. HMTL5 の使用
新しい HTML5 標準は、より軽量な DOM 構造をもたらします。構造が軽いということは、jQuery を使用するときに必要なトラバーサルが少なくなり、読み込みパフォーマンスが向上することを意味します。したがって、可能であれば HTML5 を使用してください。
いくつかの要素にスタイルを追加するには、jQuey の css() 関数を使用するのが最善の方法です。ただし、15 を超える要素にスタイルを追加する場合は、スタイル タグを DOM に直接追加する方が効率的です。この方法では、コード内でのハードコードの使用を回避します。
コードをコピー
コードは次のとおりです。
24. Avoid loading redundant code
It is a good idea to put Javascript code in different files and load them only when needed. This way you won't load unnecessary code and selectors. It is also easy to manage code.
25. Compress into one main JS file to keep the number of downloads to a minimum
When you have determined which files should be loaded, package them into one file. Use some open source tools to automatically do it for you, such as using Minify (integrated with your back-end code) or using online tools such as JSCompressor, YUI Compressor or Dean Edwards JS packer to compress files for you. My favorite is JSCompressor.
26. Use native Javascript when needed
Using jQuery is a great thing, but don’t forget that it is also a framework for Javascript. So you can use native Javascript functions when necessary in jQuery code, which can achieve better performance.
27. Load jQuery framework from Google
When your application is officially launched, please load jQuery from Google CDN, because users can get the code from the nearest place. This way you can reduce server requests, and if the user browses another website that also uses Google CDN's jQuery, the browser will immediately call out the jQuery code from the cache.
// Link specific version of the compression code
< ;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js">
28. Lazy load content for speed and SEO benefits (Lazy load content for speed and SEO benefits)
Use Ajax to load your website, which can save money on the server side Loading time. You can start with a common sidebar widget.

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











さまざまな Java フレームワークのパフォーマンス比較: REST API リクエスト処理: Vert.x が最高で、リクエスト レートは SpringBoot の 2 倍、Dropwizard の 3 倍です。データベース クエリ: SpringBoot の HibernateORM は Vert.x や Dropwizard の ORM よりも優れています。キャッシュ操作: Vert.x の Hazelcast クライアントは、SpringBoot や Dropwizard のキャッシュ メカニズムよりも優れています。適切なフレームワーク: アプリケーションの要件に応じて選択します。Vert.x は高パフォーマンスの Web サービスに適しており、SpringBoot はデータ集約型のアプリケーションに適しており、Dropwizard はマイクロサービス アーキテクチャに適しています。

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

時間計算量は、入力のサイズに対するアルゴリズムの実行時間を測定します。 C++ プログラムの時間の複雑さを軽減するためのヒントには、適切なコンテナー (ベクター、リストなど) を選択して、データのストレージと管理を最適化することが含まれます。クイックソートなどの効率的なアルゴリズムを利用して計算時間を短縮します。複数の操作を排除して二重カウントを削減します。条件分岐を使用して、不必要な計算を回避します。二分探索などのより高速なアルゴリズムを使用して線形探索を最適化します。

C++ マルチスレッドのパフォーマンスを最適化するための効果的な手法には、リソースの競合を避けるためにスレッドの数を制限することが含まれます。競合を軽減するには、軽量のミューテックス ロックを使用します。ロックの範囲を最適化し、待ち時間を最小限に抑えます。ロックフリーのデータ構造を使用して同時実行性を向上させます。ビジー待機を回避し、イベントを通じてリソースの可用性をスレッドに通知します。

Java 関数のパフォーマンスをベンチマークする方法は、Java Microbenchmark Suite (JMH) を使用することです。具体的な手順は次のとおりです。 JMH 依存関係をプロジェクトに追加します。新しい Java クラスを作成し、ベンチマーク メソッドを表す @State アノテーションを付けます。クラス内にベンチマーク メソッドを記述し、 @Benchmark アノテーションを付けます。 JMH コマンド ライン ツールを使用してベンチマークを実行します。

PHP では、配列からオブジェクトへの変換はパフォーマンスに影響を与え、主に配列のサイズ、複雑さ、オブジェクト クラスなどの要因によって影響を受けます。パフォーマンスを最適化するには、カスタム反復子の使用、不必要な変換の回避、配列のバッチ変換などの手法を検討してください。

高パフォーマンスのアプリケーションを開発する場合、C++ は、特にマイクロベンチマークで他の言語よりも優れたパフォーマンスを発揮します。マクロベンチマークでは、Java や C# などの他の言語の利便性と最適化メカニズムの方がパフォーマンスが優れている場合があります。実際のケースでは、C++ は画像処理、数値計算、ゲーム開発で優れたパフォーマンスを発揮し、メモリ管理とハードウェア アクセスを直接制御することで明らかなパフォーマンス上の利点をもたらします。

PHP 関数の効率を最適化する 5 つの方法: 変数の不必要なコピーを避ける。参照を使用して変数のコピーを回避します。繰り返しの関数呼び出しを避けてください。単純な関数をインライン化します。配列を使用したループの最適化。
