42

ノックアウト js に大きく依存する大規模で複雑なページがあります。パフォーマンスが問題になり始めていますが、コール スタックを調べてボトルネックを見つけようとすることは、実際の課題です。

別の質問 ( Knockout.js - foreach と with の理解) で、受け入れられた回答にコメントがあることに気付きました:

with...そして、オーバーヘッドのために高いパフォーマンスが必要な場所では使用しないことをお勧めします...

声明が真実であると仮定すると、これは知っておくと非常に役立つ情報であり、そのようなパフォーマンスのヒントのソースは見つかりませんでした.

したがって、私の質問は次のとおりです。

従来のパフォーマンス チューニングに深く入る前に、アプリケーションのパフォーマンスを向上させるために適用できる一般的なガイドラインや重要なヒントはありますか。

4

3 に答える 3

37

考えているヒントをひとつの回答にまとめるのは多すぎると思います。

このトピックに関する一連のブログ投稿を開始しました。最初の投稿はこちら.

この投稿では、どのように動作するか (子をテンプレートとしてコピーし、バインディングがトリガーされるたびにテンプレートを使用して再レンダリングする) について少し説明if/withし、これらのバインディングが予想よりもはるかに頻繁に再レンダリングを引き起こす可能性があることを説明します。

今後の投稿でこの回答を更新します。

于 2012-03-30T05:09:49.890 に答える
6

私が見つけた (そして他の場所で議論されていない) 最大の問題の 1 つは、要素のバインディングが変更されるたびに、Knockout が要素すべてのバインディングを評価することです。

これは通常は大したことではありませんが、高価になる傾向があるバインディング ( などtemplate) の場合、重大なパフォーマンス上の問題が発生する可能性があります。

コンテンツ/子 ( 、 など) をレンダリングするバインディングを (コンテナーレス制御フロー構文を使用して) 仮想要素にアタッチしますtemplate(foreachそれら要素の唯一のバインディングでない場合)。

于 2012-11-06T21:22:27.887 に答える
0

マッピングも役立つと思います。このテストに従って、jquert map 、ノックアウト マップの違いを確認できます。 knockout-map-vs-jquery-map

ObservableArrays マッピングを多用し始めると、重要になります

于 2013-08-13T19:48:31.010 に答える