微軟的asp.net中,有個東西叫viewstate,預設會啟用,用來維護他的控制項的一些狀態與資訊,原始的設計理念,是用來減輕程式設計師的負擔,少寫一些code,但是,凡事總是有例外,比如說,我笨笨的寫了一個小網站,巡檢系統,程式不算大,也就不到十個頁面,但是他的效能就是不佳,看原始碼,也沒複雜到那兒,但是有時就是很慢。
今天,裝了一個firefox的add-on,叫Viewstate Size,當我逛一個網頁時,他就在右下角透出這個頁面的viewstate(viewstate只會出現在用微軟asp.net寫的網站)的大小,然後就逛了一下我的小網站,天呀,真是暴肥,隨著自訂巡檢單的大小不同,竟然可以肥到635KB,如果以512/64的ADSL來說,大約要10秒的下載時間,然後如果計算整個網頁的size,竟然達到2.27MB。
在asp.net的寫法下,有很多便利的地方,但是也因為這樣,對於我這種不熟練的傢伙來說,也很容易寫出怪物程式,從他的開發介面中,並不會看到這些問題,為了方便,我拉了一狗票的User Control,然後,巨量的control,養肥viewstate,程式仍然可以動,功能仍然正常,只是,偶爾覺得,怎麼頓頓的?但又不是每次都頓頓的(歸功於區域網路的頻寬充足)。
針對viewstate,有許多處理方式,下面是參考的連結,我經驗不夠,就不亂說了
1.關掉viewstate
Help! My ViewState Is Out Of Control
2.把viestate轉到session中
Reduce ViewState Size In ASP.NET 2.0
3.查看viewstate存放的資訊--tool ViewState Decoder (2.2)
(不過我網頁的viewstate太肥,這工具沒辦法看)
http://alt.pluralsight.com/tools.aspx