请教 :viewstate 和session 的区别

sarah831208 2009-12-07 05:05:17
最近 遇到一个问题 :具体描述如下
我在页面上用viewstate 来保存从页面上导入的数据 到datatable中 :
即 viewstate["dt"] = mydt (注:mydt为我从文件中导入到页面的数据集合)
当数据量很少的时候 页面执行正常
但是 数据量很多的时候(比如 2万笔数据) 则从文件中导入到页面 存入viewstate 都没有问题 然后其他的页面操作 都会导致页面挂掉

当我怀疑页面挂掉是viewstate的问题 把viewstate 改用session 时 ,
即 session["dt"] = mydt
所有的操作 均变的正常

在网上查了很多关于viewstate 和session的区别 还是不得其解
请高手指教 ~
...全文
376 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
sarah831208 2009-12-09
  • 打赏
  • 举报
回复
嘿嘿 ,结贴子啦 谢谢大家
lfywy 2009-12-08
  • 打赏
  • 举报
回复
这个自己试试就可以了啊
yanfei_519 2009-12-08
  • 打赏
  • 举报
回复
viewstate的生命周期是一个请求和响应吧?而session的生命周期等同于是服务端和客户端的整个会话周期,因此,如果使用viewstate的话,每次的请求响应都要有实例化和销毁步骤,那么大的数据量,效率是很低的。而session的话,在整个会话过程中只创建一次,到最后客户端断开一段时间后(20min),由服务器来负责释放内存。
cuike519 2009-12-08
  • 打赏
  • 举报
回复
大哥,viewstate不是这样用的。。。

viewstate是保存页面上的某些小状态的,理论上这里放的内容没有限制(可序列化),但是你也不能弄个几兆甚至几十兆的东西吧。。。

viewstate是通过页面的Hide控件来保存状态的,session是直接保存在服务器的内存中的。
Jelly_tracy 2009-12-08
  • 打赏
  • 举报
回复
cache
这个是缓存,就是说,有时候你请求,可以不到服务器去取数据,从缓存里面读出来给你,这样就省时间了,速度提高
caobingyi 2009-12-08
  • 打赏
  • 举报
回复
学习了
yanghuijun 2009-12-08
  • 打赏
  • 举报
回复
恩.你现在说对了
cache与session在使用起来没有什么区别.因为都是存在服务端的
这两者的最大的区别就是:cache是公用的.如果用多个用户使用这段数据.那么就用cache,如果多个用户都要使用这段数据的话你用session可能会导致服务器性能严重下降.因为你的数据量很大.记得及时清空
sarah831208 2009-12-08
  • 打赏
  • 举报
回复
谢谢大家各位的回答 ,先总结一下 ~

关于我遇到的这个问题 还有 viewstate session cache ,大家都说的很对:
从页面上写入viewstate 这么大的数据 肯定挂掉
那么是使用session 呢 还是使用cache ,还是还有其他的方法呢
我暂时还是决定修改为session ,并且只是当前页面使用,使用完后,立刻销毁

原因如下 :
决定不使用cache机制 原因如下:
1. cache 一般用于 数据较固定,用的较频繁的地方,因为这样可以从很大程度上减少了用户和数据库的交互 ->提高系统的性能 ;但是我的问题,从页面上导入数据到后台datatable中响应页面上的其他控件动作,执行完即可,不需要多次跟数据库交互: 所以 使用cache 的性能也发挥不了 ;
2. cache 是分配在服务器上的一块公共的内存片,它面向的是所有的用户,
所以如果同时有管理员使用系统的这个页面导入数据,因为是公共的变量key值对,则会发生数据覆盖的现象吧 ;而session是用来保存单个用户的数据,则不会。

不知道说的是否正确 ~
wuyq11 2009-12-07
  • 打赏
  • 举报
回复
数据量太大,使用viewstate时页面数据太多,速度很慢
通过缓存实现
Joetao 2009-12-07
  • 打赏
  • 举报
回复
学习了!
阿彪兄 2009-12-07
  • 打赏
  • 举报
回复
ViewState:客户端,在本页内有效
Session:服务端,可以跨页
george010 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sarah831208 的回复:]
引用 5 楼 yanghuijun 的回复:
使用viewstate时 不是变慢的问题,页面直接后台程序不执行 页面挂掉了 啊 ~
为什么 ~~~?

你2W条数据不挂掉才怪呢!!!!



为什么 使用session 页面不会挂掉 ?
查的资料说是 viewstate 和session 都可以存储大数据量的啊 ~
cache 又是个啥东东 能详细点吗  cache 会不会导致页面挂掉呢 ?

[/Quote]

session是放内存里的,很快。 cache就是个功能强大的application,可以这样理解 具体可以去谷歌下
bzhyan 2009-12-07
  • 打赏
  • 举报
回复
可以说viewstate是局部的当前页面的,而session是全局的,在整个项目中都可以访问到。
sk8962900 2009-12-07
  • 打赏
  • 举报
回复
viewstate只是本页面的东西才起作用 而session可以跨页面
sarah831208 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yanghuijun 的回复:]
使用viewstate时 不是变慢的问题,页面直接后台程序不执行 页面挂掉了 啊 ~
为什么 ~~~?

你2W条数据不挂掉才怪呢!!!!
[/Quote]


为什么 使用session 页面不会挂掉 ?
查的资料说是 viewstate 和session 都可以存储大数据量的啊 ~
cache 又是个啥东东 能详细点吗 cache 会不会导致页面挂掉呢 ?
yanghuijun 2009-12-07
  • 打赏
  • 举报
回复
使用viewstate时 不是变慢的问题,页面直接后台程序不执行 页面挂掉了 啊 ~
为什么 ~~~?

你2W条数据不挂掉才怪呢!!!!
george010 2009-12-07
  • 打赏
  • 举报
回复
viewstate全是放在页面里传输的,你想想看就算一个文本文件,把2w条数据放进去,稍微烂点的机器估计打开都要死机
sarah831208 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yanghuijun 的回复:]
viewstate是存在客户端网页中的.你打开源文件看到的那一堆乱七八ZAO的文字即是
session是保存在服务器上的.

很明显viewstate数据量超大时.会导致网页反应变慢.

你这种情况最好用cache解决.而不是viewstate和session
[/Quote]

使用viewstate时 不是变慢的问题,页面直接后台程序不执行 页面挂掉了 啊 ~
为什么 ~~~?
yanghuijun 2009-12-07
  • 打赏
  • 举报
回复
viewstate是存在客户端网页中的.你打开源文件看到的那一堆乱七八ZAO的文字即是
session是保存在服务器上的.

很明显viewstate数据量超大时.会导致网页反应变慢.

你这种情况最好用cache解决.而不是viewstate和session
fuda_1985 2009-12-07
  • 打赏
  • 举报
回复
viewstate只能保存当前页的东西。换了个页就没了。
session存的东西在同一网站任何页面都可以用。

62,016

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧