ASP.NET 中的 ViewState

來源:互聯網
上載者:User

之前在做一些基於.NET WEB 應用的效能測試時,測試載入器經常會錄製到 __VIEWSTATE 這個隱藏的屬性,並且經常發現這個屬性在“關聯”時會存在一些問題,導致請求失敗;有時這個屬性的值還會非常的長——例如超過2000位元組,還一遍遍的在指令碼中重複出現,嚴重影響指令碼的可讀性。

所以一般都會在web.config中禁用這個東東,不過也的確沒有深入研究一下這個東西到底是幹嘛的,為什麼會出現,禁用到底對測試的真實性有什麼影響。

今天有點空,找到一篇比較權威的資料,瞭解了一下。

ASP.NET ViewState初探 http://www.microsoft.com/china/community/program/originalarticles/techdoc/viewstate.mspx

下面是一點摘要。

-------------- BEGIN ---------------

ViewState(英文)是一種機制,ASP.NET 使用這種機制來Tracing Service器控制項狀態值,否則這些值將不作為 HTTP 表單的一部分而回傳。
ASP.NET ViewState 是一種新的狀態服務,可供開發人員基於每個使用者來跟蹤 UI 狀態。ViewState 沒有什麼神秘之處,它只是利用了一個老的 Web 編程技巧:在一個隱藏的表單欄位中來回傳遞狀態。
預設情況下 ViewState 將被啟用,並且是由每個控制項(而非頁面開發人員)來決定儲存在 ViewState 中的內容。有時,這一資訊對應用程式並沒有什麼用處。儘管也沒什麼害處,但卻會明顯增加發送到瀏覽器的頁面的大小。因此如果不需要使用 ViewState,最好還是將它關閉,特別是當 ViewState 很大的時候。

使用 ViewState 時,每個對象都必須先序列化到 ViewState 中,然後再通過回傳進行還原序列化,因此使用 ViewState 並非是沒有代價的。
禁用ViewState——應用程式(在 web.config 中): <Pages EnableViewState="false" ?/>
如果在應用中 ViewState 不是必須的,並且自動產生了一個很大的 ViewState 開始影響效能,就應該考慮禁用它。

-------------- END ---------------

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.