四:理解Page类的运行机制(例:基于PageStatePersister的页面状态存取)
2009-01-19 19:31
387 查看
有人说类似gridview datalist这样的控件最好不要用在高并发,IO大的网站中
企业应用中为了快速开发到可以用一用
因为这是一类"沉重"的组件
我们姑且不谈这种看法的正确性(我个人觉得有道理)
只谈它为什么笨重:
因为这些控件给页面带来了大量的
viewstate
<input type="hidden" name="____VIEWSTATE" id="____VIEWSTATE" value=
这就是页面状态
一个页面里可能存在两种状态
控件状态,视图状态
page类是在
LoadPageStateFromPersistenceMedium()
SavePageStateToPersistenceMedium()
存取页面状态的
这两个方法都是可以重写的
他们也可以把状态信息存储在别的媒介中
我们这里通过重写PageStatePersister属性
来实现自己的状态存取逻辑
我们为了压缩viewstate里的数据,必须先实现一个工具类:如下
实验做完
大家运行一下就知道
定制出来的viewstate比自动生成的要小很多
最后评价一句
传输给客户的东西是少了许多
但是服务器的CPU要做的事情也多了
用与不用还要自己权衡
企业应用中为了快速开发到可以用一用
因为这是一类"沉重"的组件
我们姑且不谈这种看法的正确性(我个人觉得有道理)
只谈它为什么笨重:
因为这些控件给页面带来了大量的
viewstate
<input type="hidden" name="____VIEWSTATE" id="____VIEWSTATE" value=
这就是页面状态
一个页面里可能存在两种状态
控件状态,视图状态
page类是在
LoadPageStateFromPersistenceMedium()
SavePageStateToPersistenceMedium()
存取页面状态的
这两个方法都是可以重写的
他们也可以把状态信息存储在别的媒介中
我们这里通过重写PageStatePersister属性
来实现自己的状态存取逻辑
我们为了压缩viewstate里的数据,必须先实现一个工具类:如下
using System; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; public partial class _Default : System.Web.UI.Page { #region 重写PageStatePersister定制页面状态持久化行为 CompressPageStatePersister _pageStatePersister = null; protected override PageStatePersister PageStatePersister { get { if (_pageStatePersister == null) { _pageStatePersister = new CompressPageStatePersister(this); } return _pageStatePersister; } } #endregion protected void Page_Load(object sender, EventArgs e) { } }
实验做完
大家运行一下就知道
定制出来的viewstate比自动生成的要小很多
最后评价一句
传输给客户的东西是少了许多
但是服务器的CPU要做的事情也多了
用与不用还要自己权衡
相关文章推荐
- 四:理解Page类的运行机制(例:基于PageStatePersister的页面状态存取)
- 三:理解Page类的运行机制(例:在render方法中生成静态文件)
- 七:理解控件的运行机制(例:基于CompositeControl命名空间的控件)
- 五:理解控件的运行机制(例:基于Control命名空间的简单控件)
- 五:理解控件的运行机制(例:基于Control命名空间的简单控件)
- 六:理解控件的运行机制(例:基于WebControl命名空间的控件)
- 六:理解控件的运行机制(例:基于WebControl命名空间的控件)
- 七:理解控件的运行机制(例:基于CompositeControl命名空间的控件)
- 一:理解ASP.NET的运行机制(例:通过HttpModule来计算页面执行时间)
- 一:理解ASP.NET的运行机制(例:通过HttpModule来计算页面执行时间)
- 一:理解ASP.NET的运行机制(例:通过HttpModule来计算页面执行时间)
- 重写PageStatePersister属性 自定义压缩方法来减小ViewState大小来优化页面加载时间
- 二:理解ASP.NET的运行机制(例:基于HttpHandler的URL重写)
- 二:理解ASP.NET的运行机制(例:基于HttpHandler的URL重写)
- 二:理解ASP.NET的运行机制(例:基于HttpHandler的URL重写)
- 三:理解Page类的运行机制(例:在render方法中生成静态文件)
- 三:理解Page类的运行机制(例:在render方法中生成静态文件)
- 利用继承PageBase来判断登陆状态,没有登陆,则跳转到登陆页面
- 理解java程序的运行机制
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)