トップページはこちら

ASP.NETウェブアプリケーションの__VIEWSTATE

OngakuDB.comというサイトの各ページが表示されないことに気付きますた。

ASP.NETによるウェブアプリケーションには、クライアントを管理する手段として、お馴染みのセッションなどの他に、ASP.NET独自のViewStateというものがあり、各画面内で使われる一時的なデータや状態を、シリアル化&文字列化して、input hiddenに埋めておくというヤツですね。
ものは試しに、上のサイトのHTMLソースを開いてみると、最初のほうに、<input type="hidden" name="__VIEWSTATE"~という箇所があると思うのだけど、この要素のvalue属性値が、その「シリアル化された文字列」というやつでございます。で、ところが、ただ今現在のこのサイトのトップページは、この部分だけで約23KBもあって。このスクリプトは、INPUT要素はもちろん除去しないので、単純にこの部分のサイズだけで、キャッシュサイズが20KB以下の端末ではキャッシュに収まらず、それより以前に登場する要素しか、最初の分割には表示されない(このページの場合、なにも表示されない)、というのが原因でした。

ViewStateの最大の欠点は、このようにHTMLソースのサイズを肥大化してしまうことで、例えば、@ITの記事には「64Kbpsのダイヤルアップユーザがいるような環境では、(Webコントロールから出力されるものも合わせた)ViewState全体のサイズを~1KB程度に抑える必要がある」と書かれてたりするのだけど、いずれにせようちのスクリプトには致命的なので、フォームなどが正常に動かない可能性を承知で、ViewStateデータが1KBを超えてるINPUT要素は除去してしまうことにすますた。

それにしても、ViewStateが23KBって。そんなに大量のデータを処理しなければならないページには、とても見えないんだけどな(失礼)。


2005/12/09

トラックバック

このエントリーのトラックバックURL:
http://www.rcdtokyo.com/mt/mt-rcdtokyo5428-tb.cgi/30

コメント

コメントをどうぞ



保存しますか?