ASP.NETコントロールを使用したパフォーマンスへの影響
-
05-07-2019 - |
質問
ページ上のユーザーコントロールでは、ViewStateに独自の状態を保存することにより、すべてのコントロールがメモリ使用量に影響を与えることを理解しています。私の質問は、いくらですか?
たとえば、マスターページのコントロールとしてフィードバックフォームがあります。 Visible =" false"に設定されます。デフォルトで。ユーザーがフィードバックボタンをクリックすると、必要なときにコントロールが表示されます。
すべてのページ(マスターページにある)にコントロールを配置することで、相対的なパフォーマンスへの影響はどのようになりますか?私が開発しているサイトは潜在的に大量のトラフィックを抱えているので、後で物事が遅くなった場合に頭痛の種を自分で設定するのではないかと思います。
ありがとう
解決
パフォーマンスは、サーバーとクライアントに影響を与える可能性があります。主に、クライアントに送信されるビューステートを含むHTMLの量を減らします。これがすべてのページにある場合、実際に必要なよりも頻繁にこのビューステート情報を送信します。
フィードバックフォームコントロールがフィードバックページにのみ追加されるようにするロジックが必要だと思います。 visible =" false"を使用するのではなく、独自のページに配置してリンクするか、ページにコントロールを動的に追加します。
主な利点は、帯域幅の使用量の削減と、クライアントでのページの高速レンダリングです。副次的な利点には、デバッグがより簡単になり、クライアントへのコードのレンダリングがよりきれいになることです。
すべてのパフォーマンスの問題では、パフォーマンスをテストし、ハードデータに基づいて判断する必要があります。この場合、クライアントのビューステートのサイズを計算し、リクエストの数を掛けてサーバーの帯域幅使用量のサイズを確認します。クライアントでは、FireBugなどのツールを使用して、クライアントが受信した全体的なページサイズを理解します。
他のヒント
コントロールに依存します。数百行のデータグリッドでは、100kのビューステートが生成される場合があります。一方、チェックボックスはあまり生成されません。
空のaspxページにフィードバックフォームコントロールをドロップし、ブラウザでアクセスして、__ viewstate隠しフィールドを確認するだけです。これは、フィードバックフォームがビューステートの観点から各ページに追加する量です。次に、それが受け入れられるかどうかを判断する必要があります。
最初は、このような最適化については気にしません。後で遅くなる場合は、フォームをいつでも純粋なhtmlに変更し、ajaxなどを使用してデータをサーバーに投稿できます。ユーザーコントロールであり、貼り付けられたコンテンツをコピーしない限り、簡単に最適化できます