这些还是前辈们都研究烂的东东,我也只是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
其实对于这些比较底层的研究,还是外国人来的深入与具体。我在上面贴的几个引用,里面也太量引用了老外的文章,有实力的一定要看看,不会有坏处的!
分享到:
相关推荐
这份"ASP.NET4学习笔记"包含了多个部分,旨在帮助学习者深入理解该技术的核心概念和实际应用。 1. **基础概念**:笔记可能首先介绍了ASP.NET 4的基本架构和工作原理,包括页面生命周期、控件事件模型以及服务器控件...
总之,ASP.NET学习笔记涵盖了从基础到高级的诸多主题,包括但不限于ASP.NET的架构、Web Forms和MVC的区别、控件使用、身份验证与授权、数据库操作、路由和视图解析、ASP.NET Core的特性等。无论你是初学者还是有经验...
### ASP.NET北大青鸟学习笔记知识点详析 #### 一、ASP.NET动态页面构建思想与运作机制 **ASP.NET**是Microsoft开发的一款用于构建动态网页的技术框架,它基于.NET Framework,能够提供强大的服务器端功能来处理...
本学习笔记主要记录了作者在学习ASP.NET过程中的关键知识点与实践心得,旨在帮助初学者更好地理解和掌握ASP.NET的基本概念和技术要点。 ### 1. 关于页面关闭与PostBack - **页面关闭**: 在ASP.NET中,如果需要关闭...
这份"ASP.NET课堂笔记"涵盖了学习ASP.NET过程中的一些核心概念和技术,旨在帮助初学者和有经验的开发者更好地理解和应用这个技术。 1. **基础概念** - ASP.NET架构:ASP.NET是基于HTTP协议的,通过控件和事件模型...
本笔记将深入探讨ASP.NET控件的各个方面,帮助开发者更好地理解和使用这些工具。 一、ASP.NET Web表单控件 ASP.NET Web表单控件是构建用户界面的基础,它们直接对应于HTML元素,如文本框(TextBox)、按钮(Button...
此压缩包文件包含的是一个关于ASP.NET 2.0网络编程的学习笔记源代码,其中很可能包含了多个实例,帮助学习者通过实践理解ASP.NET 2.0的核心概念和技术。 在ASP.NET 2.0中,主要的知识点包括: 1. **页面生命周期**...
在这个压缩包中,包含的三个文档——"ASP.NET_2.0中的数据操作.chm"、"ASP.NET中文手册.chm"和"ASP.NET学习笔记.chm"——都是关于ASP.NET 2.0数据操作的学习资料,旨在帮助开发者深入理解如何在ASP.NET环境中高效地...
这个"asp.net2.0教学笔记.rar"压缩包文件很可能是包含了一系列关于ASP.NET 2.0学习的教程、笔记或者示例代码,旨在帮助学习者理解和掌握这个技术。 在ASP.NET 2.0中,有几个关键知识点是学习的重点: 1. **控件...
本学习笔记将涵盖ASP.NET的基础知识,包括其核心概念、开发环境、网页结构、控件使用、数据访问以及调试技巧等内容,旨在帮助初学者快速入门。 首先,ASP.NET的核心概念主要包括Web Forms、MVC(Model-View-...
8. **状态管理**:由于HTTP协议本身是无状态的,因此ASP.NET提供了一种机制来保持客户端与服务器之间的状态信息,如使用ViewState技术来保存控件状态等。 ### ASP.NET的编码与注释 9. **编码与注释**: - 在ASP...
以上是ASP.NET语法笔记的主要内容,通过学习这些知识点,开发者可以掌握创建动态、交互性强的Web应用所需的技能。在实际开发过程中,不断实践和理解这些概念,将有助于提高开发效率和代码质量。
该书涵盖了从基础知识到高级特性的全面内容,是学习ASP.NET 2.0不可或缺的参考资料。 在ASP.NET 2.0中,微软引入了许多新特性,极大地提升了开发效率和应用程序的性能。首先,本书会讲解ASP.NET 2.0的基础概念,...
在 ASP.NET 中,可以通过多种方式实现页面之间的值传递,如 `QueryString`、`ViewState`、`Session` 等。 ```csharp protected void Button1_Click(object sender, EventArgs e) { Server.Transfer("WebForm2.aspx...
总的来说,".NET学习笔记"这套资料为初学者提供了一个全面的学习路径,从基础的C#编程到Asp.NET的实践应用,再到更广泛的IT知识,有助于构建坚实的.NET开发基础。通过深入研究这些文档,学习者不仅可以掌握.NET框架...
这份Asp.NET期末复习资料很可能包含了以上各个方面的讲解和练习,可能包括PPT课件、笔记、例程代码、习题集和解答等。通过深入学习这些材料,学生将能系统地复习Asp.NET的关键技术和概念,为考试做好充分准备。同时...
ASP.NET是微软公司推出的一种基于.NET Framework的Web应用程序...这个压缩包中的10个Word文档很可能是每天学习内容的详细笔记或教程,每份文档对应一天的学习主题,帮助学习者系统地、逐步地掌握ASP.NET的核心技术。