设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 教程 > 正文

网站性能调校-Page State Persistence

发布时间:2017-01-08 10:27 所属栏目:61 来源:cnblogs
导读:我想大家对ViewState一定不陌生,ViewState是ASP.NET相对ASP新增的一个强大的功能,能够保存一个页面的state。

  【 技术文档】之所以用这个题目是因为很多人常常问我研究开源项目的意义,有一些开源项目在别人眼里看起来完全没有搞头,是一些没有实用价值的项目。其实开源项目往往是新技术的试验田,是全世界优秀程序开发者智慧的汇集,如果你仔细研读这些开源项目,得到的不仅仅是这个项目的功能,而是观摩新的技术,学习比你更聪明人的智慧。

  我一直研究的一个开源项目是DotNetNuke(简称DNN),也许你不知道这是一个什么系统,不过你不用关心这是一个什么系统,因为我要讨论的技术在任何一个ASP.NET网站里都有可能用到,只是用这个开源项目做示范罢了,不过你会看到在开源项目里,MSDN里那些死板的技术说明是如何巧妙发挥功能。

  开源网站系统提供的性能设置选项

  在DNN开源项目里,有一些设置可以调校网站的性能,包括以下这几个:

image

  我会花几篇文章逐个讨论一下这几个选项对网站性能的影响,并给出一些技术分析。 在这一篇文章里,我讨论Page State Persistence这个设置。

  什么是Page Sate Persistence

  我想大家对ViewState一定不陌生,ViewState是ASP.NET相对ASP新增的一个强大的功能,能够保存一个页面的state。简单的说,就是保存你提交页面时,文本框,下拉列表等等在页面提交那一时刻的值,这样万一你填写的内容通不过检验,就可以用这些信息来还原之前的状态(当然,用处不止这些)。知道ViewSate的人,一般都知道ViewSate使用一个hidden input来保存页面的state信息。网上有很多这样的文章,大家可以Google一下。那这个ViewSate跟性能又有什么关系呢?因为这个hidden input是要跟随PostBack信息在客户端和服务器之间来回传递的,如果这个值太大,自然会影响性能。当然,除了大小,还有一个方面就是ViewState存储的位置了,如果我们不来回传递ViewState的值,而是存储在服务器这一端,自然会减少ViewState在网络上传输占用的时间,但同时却加重了服务器的负担。

  可能很多人不知道ASP.NET 2.0的一个新特性就是可以通过重载PageStatePersister类从而实现自定义page ViewState的存储位置。在ASP.NET v1.x里,ViewState只能是存储在之前提到的那个隐藏input元素中。在ASP.NET 2.0 中,新增的SessionPageStatePersister类就提供了把ViewState存储在session里的功能。

  开源项目DNN构架如何利用这一新特性

  这个开源项目重写了页面的基类,在它自己的基类中,有一个PageStatePersister只读属性,这个属性会根据用户的设置,返回一个System.Web.UI.PageStatePersister实体,之后运行的页面就会用这个实体去实现ViewState的存储,从而实现由用户选择在哪里存储ViewState,从而调节性能。

  代码如下:

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读