中小企業向けのWebアプリケーションをプログラムする予定です。 ASP.NET Webフォームについて読んだとき、動的なサイトを構築する方法が気に入りました。
ただし、友人から、WebフォームによってViewState出力が原因でページのサイズが大きくなる可能性があると聞いたことがあります。 PHP=ページのサイズとASP.NETページの生成されたHTMLのサイズの違いは劇的ですか?
ASP.NET Webフォームを使用する場合、HTMLを拡大するいくつかの側面があります。これらはある程度緩和でき、一部は他よりも簡単であり、特に.NET 4.0では改善が行われています。
__VIEWSTATE
要素があり、WebFormsはステートフルネスの幻想を維持するために使用します。これはデフォルトでオンになっており、触れない場合は、多くのコントロールがあるページに不要な重みを簡単に追加できます。ただし、実際に使用していない場合は、EnableViewState="False"
を使用して、ページまたはコントロールでオフにすることができます。id="ctl00_AGSMasthead_imgSkipContent"
のようなHTML要素。これは.NET 4.0で改善されました。新しいClientIDMode="Static"
プロパティを使用して、IDを変更する必要がないことをWebフォームに通知できます。独自性を維持できます。<asp:Label Id="lblName" Runat="Server"/>
のようなことをするので、コードビハインドにラベルを埋め込むことができ、それは<span id="lblName">
として提供されます-あるいは、昔は、おそらく<span id="ctl00_ucHeader_lblName">
のようなものです。不要なので、個人的にはRunat="Server"
属性の代わりに、ServerID="lblName"
の行に沿って何かを設計して、コントロールがサーバー側であると識別したことを願っていますandクライアント側ID(存在する場合)とは別のサーバー側ID。結局のところ、ある程度はこれで回避できますが、Webフォームを使用するように設計された方法で使用すると、will提供するHTMLに重みが追加されます。厳密には必要ありません。
ただし、Webフォームページと他のプラットフォームやフレームワークによって生成されたページとの重みの違いは、コード化が不十分なページと、コード化されたページとの違いよりも小さいと思います。不要なタグや属性、クリーンで邪魔にならないJavaScriptなどを使用します。
あなたが示したようにASP.NETはViewStateを使用します。まず、ViewStateの目的とその理由を簡単に説明します。
簡単に言うと、ViewStateの目的は、ポストバック間でフォームフィールドの値を保持することです。そのステートメントから、フィールドが多いほど、ViewStateが大きくなると推測できます。
ポストバック間でフォームフィールドの値を保持することに加えて、ViewState[key] = value
を使用して、ViewState内に任意のデータを保存することもできます。
ただし、使用するのが適切でないページレベルまたは要素レベルでViewStateを無効にすることができます。これにより、ViewStateのスペースも節約できます。
ViewStateは非表示のフォーム要素として保存され、ページを送信するとサーバーに送信されます。次の図は、ViewState処理の要点を示しています。
(ソース: Microsoft.com )
ここで重要なのは、LoadViewState
とSaveViewState
です。 LoadViewState
は、サーバーにポストされたデータをロードします。ここで、SaveViewState
は、ページイベントが処理された後、ViewStateに格納するためにシリアル化します。
ViewStateを使用する主な利点は、ページのロード間でデータを保持することです。たとえば、ページが最初に読み込まれると、長時間実行されているデータベースクエリなどの結果がフィールドに入力されます。以降のロードでは、ViewStateの値を使用して、そのクエリの再実行を保存できます。
ViewStateはASP.NET MVCにはまったく関係がなく、ASP.NET Webフォームのコンポーネントです。
PHPには同等のものはありません。たとえば、モデルをシリアル化してPOSTで再ロードすることで、必要に応じて機能を手動で実装できます。
いいえ、必要ありません。オフにすると、ページの出力サイズは減少しますが、データの再読み込みのオーバーヘッドも考慮する必要があります。
PHPページとASP.NETページの生成されたHTMLのサイズの違いは劇的ですか?。答えはそれは出力するものに依存します。大量のフォームを作成している場合、特にAsp:DataTableなどのコントロールを使用している場合は、はい、出力が大幅に大きくなる可能性があります。表示されたViewStateは1 MBを超えます。送信するたびに、ViewState全体をWebサーバーにアップロードする必要があることを覚えておく必要があります。小さくてシンプルなフォームを作成している場合、サイズの違いは無視できます。YMMVまさにあなたが何をしているのかによります。
もう1つ覚えておくべきことは、PHPでは、生成されたマークアップをWebFormsで行うよりもはるかに制御しやすいことです。