庖丁解牛Asp.net3.5控件和组件开发技术系列—页面状态机制(四)
文件名称为SessionPageAdapter.browser的文件,内容如下: <browsers> //… … <browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.Page" adapterType="KingControls. SessionPageAdapter" /> </controlAdapters> </browser> </browsers> 运行一下页面,也会发现得到与之前相同的效果。这两种方法都能够在服务器Session中存储视图信息。不同的一点是后面这种方式影响到了整个站点下面的所有页面。 Session一般用于存储特定于单独会话的短期信息,比存储到客户端隐藏域中方式要安全得多。但这种方式要占用服务器内存,因此在客户端比较多的情况下不要在Session中存储大量的信息。 6.9.2 体积优化 -- -- 压缩视图状态数据 这一节讲解另一种优化技术,在序列化对象信息前先压缩数据。其实现机制也是重写基类Page的PageStatePersister属性,下面就介绍一下它的实现。 首先定义一个实现System.Web.UI.PageStatePersister基类的类CompressPageStatePersister,代码如下所示:
在以上代码中重写了PageStatePersister类的的Load和Save两个方法。PageStateKey变量为页面状态保存在页面中的字段名。 在Load方法中,首先通过语句:
取得保存到客户端压缩了的状态信息,然后调用压缩类CompressHelp中的Decompress方法解压缩返回,然后赋值给基类中的this.ViewState和this.ControlState,这两个对象分别标志视图状态和控件状态。 Save的过程正好相反,将当前对象的数据压缩,并通过Page.RegisterHiddenField方法把值注册到客户端隐藏控件。 压缩类CompressHelp主要提供了两个静态方法,代码如下:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |