重写Page基类的
protected override object LoadPageStateFromPersistenceMedium()
{
.....
}
protected override object SavePageStateToPersistenceMedium(object viewLightPageState)
{
.....
}方法形成自己的nPage类,使得ViewState并不保存在客户端,ViewState内容信息保存在服务器端的文本文件中以备调用,有何利弊?感觉开销很大,请问诸位大人有没有更好的办法?
protected override object LoadPageStateFromPersistenceMedium()
{
.....
}
protected override object SavePageStateToPersistenceMedium(object viewLightPageState)
{
.....
}方法形成自己的nPage类,使得ViewState并不保存在客户端,ViewState内容信息保存在服务器端的文本文件中以备调用,有何利弊?感觉开销很大,请问诸位大人有没有更好的办法?
这还比较简单,
其次,b/s是无状态的,viewstate 是为了保留状态的,你如何知道,用户这次访问完,何时再来?也就是说何时把不需要的viewstate删除?
viewstate确实有其缺点,如你所说
如果认为viewstate不好,不如禁用,用session
需要的证据,我可以给你:任何一次页面加载和刷新,增加服务器I/O操作,客户端传输压力稍微减小,由于我的服务器将会同时运行SQL,逐I/O开销是最影响系统性能的因素之一
都会增加服务器的压力,试想如过n0000人同时访问你的叶面,下载一次,然后再PostBack一次,你都要处理VewState,那服务器需要多么强的硬件? 20G 内存 or 16CPU or 其他试想Ms为何要设计将ViewState默认存放在客户端,而不是服务器端?你打开msdn等MS自己的网站,看看他自己的网站也没有将ViewState从客户端html挪如服务器端。所以说 ViewState存放在服务器端 只是用昂贵的服务器资源换取了客户端 几百毫秒的快感而已。虽然ViewState是asp.net给我们带来的一个很好用的东西,但记住,不要什么都网它里曼塞,
对于一些 只显示内容 而不需要保持状态的控件可以使得叶面ViewState体积减少的。你可以做一个测试设置一个叶面的EnableViewState为false 然后察看它的ViewStae,你看到的将会很少很少。
回答非常全面,感谢关注!
http://community.csdn.net/Expert/topic/5195/5195991.xml?temp=.7162897