2

ページ上のユーザー コントロールでは、すべてのコントロールが ViewState に独自の状態を格納することでメモリ使用量に影響を与えることを理解しています。私の質問は、いくらですか?

たとえば、マスターページのコントロールとしてフィードバック フォームがあります。デフォルトでは Visible="false" に設定されています。ユーザーがフィードバック ボタンをクリックすると、必要なときにコントロールが表示されます。

コントロールをすべてのページ (マスターページに配置されているため) に配置するが、目に見えない場合の相対的なパフォーマンスへの影響はどうなるでしょうか? 私が開発しているサイトには大量のトラフィックが発生する可能性があり、後で処理が遅くなった場合に頭痛の種になるのではないかと考えています。

ありがとう

4

2 に答える 2

2

サーバーとクライアントのパフォーマンスが影響を受ける可能性があります。主に、クライアントに送信されるビューステートを含む HTML の量を減らしたいと考えています。これがすべてのページにある場合、このビューステート情報を必要以上に頻繁に送信することになります。

フィードバック フォーム コントロールがフィードバック ページにのみ追加されるようにするロジックが必要だと思います。visible="false" を使用するのではなく、独自のページに配置してリンクするか、コントロールをページに動的に追加します。

主な利点は、帯域幅の使用量の削減と、クライアントでのページのレンダリングの高速化です。副次的な利点として、デバッグが容易になり、クライアントへのコード レンダリングがより明確になります。

すべてのパフォーマンスの問題について、パフォーマンスをテストし、ハード データに基づいて判断を下す必要があります。この場合、クライアントのビューステートのサイズを計算し、リクエスト数を掛けてサーバーの帯域幅使用量を確認します。クライアントで FireBug などのツールを使用して、クライアントが受信した全体的なページ サイズを把握します。

于 2009-03-08T23:33:38.043 に答える
0

コントロール次第です。数百行のデータグリッドは、100k のビューステートを生成する可能性があります。一方、チェックボックスはあまり生成されません。

フィードバック フォーム コントロールを空の aspx ページにドロップし、ブラウザーでアクセスして、__viewstate 非表示フィールドを確認するだけです。これは、ビューステートに関してフィードバック フォームが各ページに追加する量です。次に、それが受け入れられるかどうかを決定する必要があります。

最初からそのような最適化については触れません。後で遅くなる場合は、いつでもフォームを純粋な html に変更し、ajax などを使用してデータをサーバーに送信できます。ユーザー制御であり、コピーペーストされたコンテンツではない限り、最適化は簡単です

于 2009-03-08T23:33:45.627 に答える