3

サイトのパフォーマンスが悪いからではなく、一般的な演習として、サイトのパフォーマンスを改善したいと考えています。asp.net サイトの通常の提案は、可能な限りビューステートを削除することです。これは、ページ上の各コントロールで個別に、またはページ全体で実行できると思います。

私の質問は、ページのビューステートを無効にすると、マスターページのコントロールのビューステートが停止することです (マスターページは実際にはページ上のコントロールであることを理解しているため)。

4

3 に答える 3

3

すべてのビューステートを縮小する簡単な方法があります。

ステップ 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

App_Browsersステップ 2.プロジェクトにフォルダーを追加します。

ステップ 3. 新しいApp_Browsersフォルダーに、default.browser次のような新しいファイルを追加します。
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page" adapterType="[YourNamespaceGoesHere].SessionPageStateAdapter" />
</controlAdapters>
</browser>
</browsers>

ここでページを実行すると、viewstate のサイズが数バイトに減っていることがわかります。SessionPageStateAdapter クラスは、viewstate がブラウザーに提供される前にインターセプトし、セッション状態でサーバーに保持します。クライアントに送信されるビューステートのビットは、ページがサーバーに戻されるときに元のビューステートを再構成するために使用される単なる識別子です。

于 2008-10-15T09:09:08.280 に答える
1

サイトを最適化する前の簡単なメモとして、すべてのファイルが送信前に gzip されていることを確認して、サーバーを最適化しましたか。

そうでない場合は、ページをいじり始める前に、これでうまくいきます。

http://www.codinghorror.com/blog/archives/000059.html

于 2008-10-14T17:16:31.010 に答える
1

はい、ページはページ フローの発信元です。したがって、ページのビューステートを無効にすると、ビューステートのレンダリングが OnInit プロセスから除外されます。より良い質問は、マスター ページのビューステートを無効にすると同じことが起こるのはなぜですか?

于 2008-10-14T15:06:17.730 に答える