neuhawk

博客园 首页 新随笔 联系 订阅 管理
   最近忙于开发一套internet应用的信息系统,以前做企业内部管理系统,几乎不用考虑到的ViewState 的问题,导致一个表单录入竟然有300k-400k的大小。很显然在internet是不可行的,所以做了很多优化的办法,最后压缩到不到原来的1/10。

 asp.net的控件开发模型,在一定程度上是成功的,然后控件开发模型带来的ViewState 的开销,如果开发不注意,会导致页面体积猛涨。
 
  Cristian Civera  所开发的免费程序ViewStateAnalyzer http://lab.aspitalia.com/26/ViewStateAnalyzer200.aspx#eng
透过 Internet Exploer 附加 ToolBar 功能, 可以记录与分析 ASP.NET 2.0 ViewState 的内容, 并可选取两个被记录下来的 ViewState 进行比对,对于某些状况 (例如: The state information is invalid for this page a nd might be corrupted. 错误讯息) 的除错十分方便。 有兴趣的朋友可于此处下载,这是几个类似工具中做得比较好的一个。

 
顺便交流一下我的小经验:
 1,尽量不要用asp.net自带的验证控件,在批量录入数据时大量的验证控件生成很多页面代码;
 2,如果htmlcontrol能满足你的要求,就可以不用webcontrol;
     3,很多时候用repeater也很不错,不一定都用gridview;
 4,对于ViewState 比较大的页面,可以考虑压缩;
 5,对于移动的应用,可以考虑把ViewState 放到session中;
     6,用javascript动态创建控件,也能够压缩不少页面代码;
   7,利用一些成熟的框架(如jquery),能够大大提高开发效率,提高UI体验,还得靠javascript做很多工作;
      8,如果控件的ViewState没有必要,就要设置EnableViewState =false,对于gridview,ViewState有蛮多重要的信息(如分页信息),所以不能gridview.EnableViewState =false,但是可以用gridview.Controls[0].EnableViewState=false,以清除没有用的ViewState。
     

posted on 2007-06-12 21:47  neuhawk  阅读(6042)  评论(16编辑  收藏  举报