贝网博客

我的分类
流水记事
源码下载
Asp.net
其它
数据库
Javascript
.Net技术
我的相册
友情链接
博客园
CSDN博客
Start0
最新回复
嗷嗷的cCC
fasdfasdf
[:..
lz这个东西好厉害,我..
哈哈,好照片
不错,以前一直用黄色..
终于找到支持ff的修正..
终于找到支持ff的修正..
新鲜性
看看,试试,好不好使。
分类 =》源码下载
在Asp.net项目中,对ViewState压缩,以减少aspx页面大小,提高网络传输效率,内附测试代码下载
发表于:2010-12-29 21:46:02
更新于:2011-11-18 10:28:19

 在我接触到的很多项目中,都用到了ViewState视图状态,而且这些项目还用了很多GridView、TreeView、Repeater之类的数据绑定控件,导致ViewState在Html代码里占用的比重不小,有的页面直接会导致IE几乎无法响应

我个人开发的项目中,大部分项目都是关闭ViewState,比如直接在页面上的Page节里添加EnableViewState="false",
或者在页面的控件关闭ViewState,例如:<asp:Repeater id="repData" EnableViewState="false" runat="server">,

当然,关闭ViewState后,最大的不便就是
1、提交无法保持这些控件的状态,导致提交后的代码也要对控件进行数据绑定;
2、控件的事件无法响应,比如Repeater控件的OnCommand事件无法响应
但是这些都是可以通过别的方式来代替解决的

个人见解,小型项目,访问量不大的项目,可以使用ViewState,但是访问量大的项目,ViewState太大,会导致网络流量太大,导致页面加载偏慢,甚至无法响应了
如果实在要用,也可以通过重写Page类的LoadPageStateFromPersistenceMedium和SavePageStateToPersistenceMedium方法,来对ViewState进行压缩处理,在我提供的代码里,测试了2种方法进行压缩,下面是根据我的代码得到的测试数据:
1、不使用压缩:提交前的ViewState为1652字节,提交后为5032字节
2、使用System.IO.Compression.GZipStream压缩:提交前的ViewState为1262字节,提交后为1890字节
3、使用ICSharpCode.SharpZipLib.GZip压缩:提交前的ViewState为586字节,提交后为886字节

从上面的测试结果可以看出,第3种方案比第一种方案,ViewState节省了70%以上的数据流量

另:建议压缩方案:
1、创建一个BasePage.cs文件,从Page类继承,把重写方法写在类里
2、创建你自己的ASPX页面,Aspx.cs不从Pageod继承,改从BasePage类继承,然后写你自己的代码吧

下面是测试代码下载:
下载  已下载

发表评论
名称(*):
邮箱:
正文:

©2008 Beinet.cn 版权所有