私たちはビューを切り替えるのにui-router
を使用している非常に複雑なAngularアプリケーションを持っています。我々は最近、ビューの切り替えが300msから1500msの遅れを生み出すことに気づいた。DOMレンダリング時間を改善するには
我々は、次の原因を排除:
- AJAX呼び出し - データがすでに
- 非同期HTMLテンプレートのフェッチをロードされている - 私たちはhtml2js
- に$ダイジェストに複雑なロジックを使用している - プロファイラは表示されませんでした
- と呼ばれ、双方向バインディングではなく1回限りのバインディングを使用すると、最初のレンダーにほとんど影響しません。
遅れは、ページにあまりにも多くのDOM要素を描画することによって発生する可能性が高いとわかりました。
明示的な解決策とは別に、レンダリングされたDOM要素を減らすこと(同じ機能を維持することは容易ではありません)では、DOMのレンダリング速度を改善するために何ができますか?
私たちの意見は、多くの小さな指示で構成されています。ディレクティブとDOM要素を非同期に(UIをブロックせずに)レンダリングする方法や、ディレクティブ/ビューのDOMツリーをレンダリングしているときにスピナーを表示する方法はありますか?
DOMはコードではなくブラウザによって表示されるため、そのプロセスへの影響は限定的です。しかし、スピナーで単純なDOMを表示してレンダリングを初期化することは可能です。 – KWeiss
多くのDOM要素(具体的には入力やselect2のようなもの)を使用して、大きな複雑なUIを構築するときには、しばしばラグタイムを抱えています。 ChromeとIE11のレンダリングの違いをテストする必要があります。 ChromeはIEよりもはるかに高速に要素をレンダリングします(ただし遅いかもしれません).2つの要素の間に大きな違いがある場合は、レンダリングが問題であることを特定できます。それが問題であれば、オフスクリーン要素がjavascriptで表示されるまでレンダリングされないようにコードを作成できます。それが事実であると思われる場合、私はアンウォールに投稿できるいくつかのコードを持っていると思われます – QBM5
クロムの開いているページ - >他のツール - >デベロッパーツール - >タイムライン&リフレッシュページ – technosaurus