重写Page基类的
protected override object LoadPageStateFromPersistenceMedium()
{
.....
}
protected override object SavePageStateToPersistenceMedium(object viewLightPageState)
{
.....
}方法形成自己的nPage类,使得ViewState并不保存在客户端,ViewState内容信息保存在服务器端的文本文件中以备调用,有何利弊?感觉开销很大,请问诸位大人有没有更好的办法?

解决方案 »

  1.   

    以Repeater举例(其中加载了大量数据),当其ViewState被保存在服务器端,并在客户端不停的刷新调用时,在传输上有何缓解? 服务器端内存压力大吗?
      

  2.   

    “在客户端不停的刷新调用时”这句我也没有看懂。你的意思是说所有用户都是在不断刷新页面?而我看网页通常每隔几分钟才刷新一下,并不是不断刷新。一个有1千人在线的web服务器,将内存里的垃圾换出去与将有用的内容缓存起来一样重要,甚至更加重要。
      

  3.   

    注意这种方式不适合于群集,除非你把服务器端的ViewState持久也在群集中共享了。
      

  4.   

    其实,服务器4G内存 3.06*2至强,资源倒不是问题,我觉得I/O开销很大,受不了
      

  5.   

    搂主方法不好,首先,viewstate是针对具体客户的,你需要针对每个用户建议唯一的viewstate
    这还比较简单,
    其次,b/s是无状态的,viewstate 是为了保留状态的,你如何知道,用户这次访问完,何时再来?也就是说何时把不需要的viewstate删除?
    viewstate确实有其缺点,如你所说
    如果认为viewstate不好,不如禁用,用session
      

  6.   

    sp1234(天气真好,心情越来越好) 感觉开销很大,那么不这样做时开销很小吗?有何根据?
    需要的证据,我可以给你:任何一次页面加载和刷新,增加服务器I/O操作,客户端传输压力稍微减小,由于我的服务器将会同时运行SQL,逐I/O开销是最影响系统性能的因素之一
      

  7.   

    求 xiahouwen(武眉博<活靶子.NET>)  详解!
      

  8.   

    再次提出我的想法:尽可能节省服务器I/O开销.内存开销,可以考虑使客户端加载稍微变慢,以尽可能多的资源用于SQL
      

  9.   

    ViewState 存放在客户端html的 input type = hidden 中 会 增加网络流量和用户下载该叶面的时间,然而这个这个只是慢一点点而已ViewState 存放在服务器端 其他介质,如 内存, 磁盘,数据库
    都会增加服务器的压力,试想如过n0000人同时访问你的叶面,下载一次,然后再PostBack一次,你都要处理VewState,那服务器需要多么强的硬件? 20G 内存 or  16CPU or  其他试想Ms为何要设计将ViewState默认存放在客户端,而不是服务器端?你打开msdn等MS自己的网站,看看他自己的网站也没有将ViewState从客户端html挪如服务器端。所以说 ViewState存放在服务器端 只是用昂贵的服务器资源换取了客户端 几百毫秒的快感而已。虽然ViewState是asp.net给我们带来的一个很好用的东西,但记住,不要什么都网它里曼塞,
    对于一些 只显示内容 而不需要保持状态的控件可以使得叶面ViewState体积减少的。你可以做一个测试设置一个叶面的EnableViewState为false 然后察看它的ViewStae,你看到的将会很少很少。
      

  10.   

    xiahouwen(武眉博<活靶子.NET>) 
    回答非常全面,感谢关注!
      

  11.   

    我同意 xiahouwen(武眉博<活靶子.NET>) 说的,ViewState如此设计总有它的道理的,没必要自己乱改。
      

  12.   

    分还没拿完,都积极点吧~ ^o^
    http://community.csdn.net/Expert/topic/5195/5195991.xml?temp=.7162897
      

  13.   

    xiahouwen(武眉博<活靶子.NET>) 去拿分