パフォーマンスとスケーラビリティに関する問題 †過度のアロケーション †メモリを要求ごとに過度に割り当てるアプリケーションは、メモリを消費し、必要以上のガベージ コレクションを発生させます。 原因となる可能性
処理のブロック †ASP.NET 要求を処理する 1 つのスレッドは、下位呼び出しの戻り値を待つ間、ブロックされて新たなユーザー 要求に対応できなくなります。ブロック呼び出しは、他の受信要求の処理に利用可能なスレッドの数を減らします。 長い時間の処理の回避策
遅延バインディング †遅延バインディングは、実行コードを特定し、ロードするために、実行時に追加的なインストラクションを要求します。 大きなページ †ページ サイズが下記のことによる影響を受けます。
不適切なデータ キャッシュ †キャッシュすべきのもの:
不適切な出力キャッシュ †出力キャッシュを使用していない場合、または不適切に使用している場合、Web サーバーに回避可能な負担がかかる場合があります。 非効率なレンダリング †HTML コードやサーバー コードを散在させる、ページ ポストバックで不必要な初期化コードを実行する、データの遅延バインディング、といったアプローチは、大きなレンダリング オーバーヘッドの原因となり得ます。 不要な例外を避ける。 †例外は、アプリケーションに大きなオーバーヘッドをもたらします。ロジック フローの制御に例外を使ってはなりません。可能な限り、例外を避けるようにコードを設計してください。例えば、ユーザー入力を検証し、例外の発生し得る既知の状況を確認してください。また、不要な処理を避けるため、早い段階で異常終了するようにコードを設計してください。
通常のアプリケーション ロジック フローを制御するために例外管理を使うことは避けてください。
例外が発生すると、ランタイムはスタックを操作し、探索します。ランタイムが例外ハンドラを求めてスタックを探索するほど、例外処理に伴う負担は大きくなります。
可能な限り、例外は発生場所の近くでキャッチし、処理してください。これにより、スタックでの過剰かつ高くつく探索と操作を避けることができます。
依存するタスクが異常終了した場合に、高くつく、または所要時間の長い作業を回避できるようにコードを設計してください。
例外ログメカニズムを実装し、管理者や開発者が問題を特定して是正できるように、例外に関する詳しい情報を記録してください。
ユーザーに対し、詳しい例外情報を表示しないようにし、セキュリティを保つと共にクライアントへ送るデータ量を抑えてください。 ラウンド トリップ数を減らす。 †HttpResponse.IsClientConnected †要求の処理および負荷の大きいサーバー側処理の実行の前に、クライアントがまだ接続されているかを確認するのに、 HttpResponse.IsClientConnected プロパティを使うことを検討してください。 キャッシング †アプリケーションが静的、またはほぼ静的なデータを取得、変換、レンダリングする場合、キャッシングによって余計なヒットを回避できます。 揮発性データと不揮発性データを分ける、操作支援やヘルプ システムなどの静的コンテンツをカプセル化し、揮発性の高いデータと別にするように、ユーザー コントロールを設計してください。これにより、静的データのキャッシュが可能となり、サーバーへの負荷を小さくすることができます。 正しいキャッシング メカニズムを選択する
Server.Transfer †可能な限り、Response.Redirect メソッドの代わりに Server.Transfer メソッドを使ってください。 Response.Redirect は、応答ヘッダーをクライアントへ送ります。これにより、クライアントは新しい URLにより、再指定されたサーバーに新しい要求を送ります。Server.Transfer は、単純にサーバー側呼び出しをすることにより、この迂回を回避します。 Server.Transfer は、コントロールを同じアプリケーションのページへ移す場合にのみ使えることにも注意してください ウィジェット型CM動画配信サービス manna [マナ] コメント: |