ASP.NETマスターページとビューステート
-
03-07-2019 - |
質問
サイトのパフォーマンスを改善したいと考えています。パフォーマンスが悪いためではなく、一般的な演習のためです。 asp.netサイトの通常の提案は、可能な限りビューステートを削除することです。これは、ページ上の各コントロールによって個別に、またはページ全体に対して実行できると考えています。
私の質問は、ページのビューステートを無効にすると、マスターページ上のコントロールのビューステートが停止することです(マスターページは実際にはページ上のコントロールであることがわかります)。
解決
はい、ページはページフローの発信者です。したがって、ページのビューステートを無効にすると、OnInitプロセスからビューステートのレンダリングが行われなくなります。より良い質問は、なぜマスターページのビューステートを無効にしても同じことになるのでしょうか?
他のヒント
ビューステートをすべて縮小する簡単な方法があります。
ステップ1.次のような新しいクラスを作成します:
Imports System
Imports System.Web.UI
Public Class SessionPageStateAdapter
Inherits System.Web.UI.Adapters.PageAdapter
Public Overrides Function GetStatePersister() As System.Web.UI.PageStatePersister
Return New SessionPageStatePersister(Page)
End Function
End Class
ステップ2.プロジェクトにApp_Browsers
フォルダーを追加します。
ステップ3.新しいdefault.browser
フォルダーに、次のような新しい<browsers>
ファイルを追加します。
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page" adapterType="[YourNamespaceGoesHere].SessionPageStateAdapter" />
</controlAdapters>
</browser>
</browsers>
<=>
今すぐページを実行すると、ビューステートのサイズが数バイトに低下していることがわかります。 SessionPageStateAdapterクラスは、ブラウザに提供される前にビューステートをインターセプトし、セッションステートでサーバーに保持します。クライアントに送信されるビューステートのビットは、ページがサーバーにポストバックされるときに元のビューステートを再構成するために使用される単なる識別子です。
この記事は役に立つかもしれません:
http://msdn.microsoft.com/en-us/library/ms972976。 aspx
サイトを最適化する前に、簡単にメモしてください。送信前にすべてのファイルがgzip圧縮されていることを確認して、サーバーを最適化してください。
そうでない場合、ページをいじくり始める前に、これはあなたに素晴らしい後押しを与えます。