2012-04-12 10 views
1

私は複雑で複雑なものがありますASP.NET Webフォームのサイズが大きいのはViewStateです。現在、__VIEWSTATEの非表示の入力フィールドを縮小してブラウザの影響を減らすために、私はPageAdapterSessionPageStatePersisterを使用して、をSessionに格納します。ViewState、Session and StateServer

ただし、セッションモードをInProcからStateServerに変更したいので、RAMの使用量を減らし、サイトの再起動とアプリケーションプールのリサイクルの問題を回避できます。 ViewStateをセッションから戻す必要がありますか?それともそのままのままにすることができますか?

将来的には負荷分散もしたいと思っていますが、「スティッキセッション」を使うことができると聞きましたので、StateServerに強制しないかもしれません。

注:私は現在.NET 2.0(統合型)を使用していますが、更新することは可能です。

+0

:あなたはこのようweb.configPageStateFieldLengthを設定することができます。しかし、私はScott Hanselmanのこの見解を読むことをお勧めします - http://www.hanselman.com/blog/MovingViewStateToTheSessionObjectAndMoreWrongheadedness.aspx - ViewStatesの大きいページではHttpCompressionを有効に使用していたので、セッションメモリのコストはかかりませんでした。スティッキーセッションは、ユーザーが単一のサーバーに移動することを保証します。今日のメモリが不足している場合は、ユーザーがそれぞれのリクエストで異なるサーバーにアクセスできる場合は、別の方法で状態を分散する必要がある問題を解決できます。 – dash

答えて

0

SessionPageStatePersisterは、セッションオブジェクトにViewstateを保存します。が格納されています。あなたのセッションがInProc、SQL、StateServerのいずれかであるかどうかは完全に無関係です。何もしなくても機能し続けるだけです。

2

私はそのルートを行く前になりますいくつかの他のオプションは、私がになります最初のものは、最大60%のViewStateのサイズを小さくすることができますViewStateの圧縮、ある

...があります。 Telerikは優れた圧縮モジュールを提供しています。here

第2に、ViewStateフィールドに最大長を設定すると、ASP.NETは複数の非表示フィールドにViewStateを分割します。これにより、通常、ページのパフォーマンスが向上します。 ViewStateは直列化可能であるとしてあなたは何の問題もないはず

<pages maxPageStateFieldLength="100"></pages>