私はAngularアプリを持っていて、それをUIBootstrapプロジェクトと統合しました。私は通常を使用しています
750レコードを含むドロップダウンのあるモーダルダイアログでは、アイテムの1つを選択して[OK]または[キャンセル]をクリックすると、モーダルとオーバーレイが遅滞なくフェードアウトします。
Here's the plunker:
750レコードのモーダルダイアログ
ドロップダウンのあるモーダルダイアログに約1万件以上のレコードが含まれていて、リストからアイテムの1つが選択されている場合。[OK]または[キャンセル]をクリックしても、モーダルダイアログがすぐに非表示になるわけではありません。代わりに、Chromeで8〜10秒の遅延が発生し、IEではまだテストしていません。
Here's the plunker:
10k以上のレコードを含むモーダルダイアログ
質問:より多くのデータでパフォーマンスが低下するのはなぜですか?
DOMの首をつかみ、10,000<option>
ノードを喉に注ぐことで、ブラウザー全体の速度を低下させています。どういうわけかデータを遅延ロードする必要があります。Twitter、Facebookなどのサイトで、ページの一番下までスクロールすると、サーバーからより多くのレコードが読み込まれることに気付いたことがありますか?優れたアプリは、スクロールアップされた古いレコードもガベージコレクションし始めます。
Facebookのニュースフィードをスクロールすると、2007年以降のすべての友達の投稿が同時にブラウザに読み込まれるわけではありません。DOMに最大数の投稿が存在すると、Facebookは上にスクロールした最も古い投稿の削除を開始して、より多くのスペースを確保し、サーバーから新しい投稿を取得して、スクロールを続行できるようにします。DOMに投稿が追加されているため、下にスクロールするとブラウザのスクロールバーが上にジャンプすることもあります。
これほど多くのデータを処理できるブラウザはありません。ブラウザはデータベースではありません。10kレコードのあなたのプランカーがそれと同じくらいパフォーマンスが良いことに驚いています!ハハ。ドロップダウンは、そのデータを表示したいものではありません。座って、そのデータをユーザーに表示するためのより良い方法を考える必要があります。私の最初の考えは、最初に上位25の最も選択されたオプションなどを含むフィルター可能なリストを提供することです。次に、検索フィールドに入力すると、検索条件に一致する新しいリストがサーバーから読み込まれます。ユーザーが実際に何を望んでいるかを知っているのはあなただけですが、それは10k以上のオプションを備えたドロップダウンリストではないことを保証します。
例:
ブラウザのスクロールバーが一番下に来ると、少し上にジャンプすることに注目してください。Twitterが一番下に移動し、さらにデータを読み込んでスクロールします。十分にスクロールすると、最終的にはページ上部のデータのクリーンアップも開始されます。
最新のブラウザは多くのことを処理できますが、10,000以上の<option>
ノードがそれをやり過ぎています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加