asp.net的ViewState学习
這些還是前輩們都研究爛的東東,我也只是COPY他們的成果,好了,什么也不說了,先來一張表:
| 頁面事件 | ViewState相關操作 |
| PreInit | 設置控件靜態屬性 |
| Init | 執行TrackViewState方法(打開ViewState跟蹤) |
| InitComplete | |
| 從_ViewState隱藏字段更新控件屬性,因為控件屬性大部分實際存儲在ViewState中,所以也可以說是恢復/更新ViewState,并對 恢復/更新過的ViewSate標記為Dirty | |
| 從回傳的PostData值中更新控件屬性 | |
| PreLoad | |
| Load | |
| 再次從回傳的PostDataw值中更新控件屬性 | |
| LoadComplete | |
| PreSender | |
| PreSenderComplete | |
| 執行SaveViewState方法(所有標記為Dirty的ViewState被存儲下來) | |
| Sender | |
| Unload |
?
?
還是說下自己的心得吧。為什么我們這么關心ViewState,能方便我們編程,這只是其一,其二就是如果我們不注意,ViewState也許會我們的應用程序帶來負面影響。最主要的就是使頁面的體積“無限增大”。而實際上這有很多都是可以避免的!
在ViewState的生命周期中(請允許我這么說),哪一階段最值得注意?我認為是執行TrackViewState方法的時候。當執行了這個方法,就意味著在今后任意對控件狀態的修改都會被ViewState記錄,而這也是頁面體積“無限增大”的源泉。
ViewState的理念是什么?是變,任何變化都逃不出ViewState的眼睛!
如果我們想編出一個性能優秀的作品,一定不會放過對ViewState的優化,特別是對那些靜態數據,它們僅僅只是起顯示作用,并不會得到修改。所以,針對以上兩個特點,我們就有兩個解決方案:要么不用ViewState,要么在TrackViewState方法執行之前對值進行變化。
我們在對頁面進行編程前,需要對頁面進行一次分析,哪些數據是僅供顯示的靜態數據,哪些數據是需要用戶來完成交互的動態數據。我們要做的,僅是讓ViewState記錄那些進行交互的狀態就可以了。
當然,上面說的實在太理想化,但這卻是我們做Asp.net的原則之一,盡力往上面靠就好了。
看過一個數字,說ViewState在頁面中不要超過30%,或者不要超過30K,不然性能一般不太好。我雖然對這個數字不太感冒,但是盡力縮小ViewState,卻是我們每個Asp.net程序員義不容辭的責任啊!
?
參考的文章:
1.對viewstates的理解更深入了(1)
http://blog.csdn.net/orichisonic/archive/2008/10/15/3078994.aspx
2.對viewstates的理解更深入了(2)
http://blog.csdn.net/orichisonic/archive/2008/10/15/3078996.aspx
3.?真正理解ASP.NET的ViewState (Truly Understanding ViewState)???? 很有名的一篇譯文
http://blog.csdn.net/vividboy/archive/2008/01/28/2069347.aspx
4.ASP.NET開發人員必讀──關于ViewState和動態控件的帖子
http://blog.joycode.com/saucer/archive/2006/09/28/84379.aspx
?
其實對于這些比較底層的研究,還是外國人來的深入與具體。我在上面貼的幾個引用,里面也太量引用了老外的文章,有實力的一定要看看,不會有壞處的!
?
轉載于:https://www.cnblogs.com/ljzforever/archive/2010/03/07/1680333.html
總結
以上是生活随笔為你收集整理的asp.net的ViewState学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本人常用的基础 linux命令
- 下一篇: 鸡肉怎样吃好?