黑马程序员技术交流社区

标题: 为什么不要放太多的对象到Session? [打印本页]

作者: 许庭洲    时间: 2012-6-11 07:52
标题: 为什么不要放太多的对象到Session?
若放太多的对象到Session会出现什么现象?
作者: 钟广雄    时间: 2012-6-11 08:32
占用资源吧,占用的是服务端的,太大了,而且得不到合理的清楚处理,可能会造成服务拒绝,当然现在的电脑配置是不太可能的,
总的来说会影响服务性能,就好像人家所说的DDOS攻击 中的一种Flood攻击方法差不多,发起Flood会占用系统资源过多,导致其他用户
访问服务拒绝
作者: 李玲    时间: 2012-6-11 09:57
        在Session对象中存储过多的数据,服务器会不堪重负。
     当一个用户访问某页面时,每个Session变量的运行环境便自动生成,这些Session变量可在用户离开该页面后仍保留20分钟!(事实上,这些变量一直可保留至“timeout”。“timeout”的时间长短由Web服务器管理员设定。一些站点上的变量仅维持了3分钟,一些则为10分钟,还有一些则保留至默认值20分钟。)所以,如果在Session中置入了较大的对象(如ADO recordsets,connections, 等等),那就有麻烦了!随着站点访问量的增大,服务器将会因此而无法正常运行!因为创建Session变量有很大的随意性,可随时调用,不需要开发者做精确地处理,所以,过度使用session变量将会导致代码不可读而且不好维护。



  虽然“你可以在任何想要使用的时候直接使用session变量,而不必事先声明它,这种方式接近于在VB中变量的使用。使用完毕后,也不必考虑将其释放,因为它将自动释放”。但是,“谁”想到那儿呢?变量的含义是什么?这些都变得不很清晰。

作者: 吴伟烈    时间: 2012-6-19 21:38
占用服务器资源
作者: 程艳伟    时间: 2012-7-2 11:42
session是为每个客户建立的,如果一个站访问量大的话就会很占服务器资源
作者: xiaozehope    时间: 2012-7-2 13:57
每一个客户端用同一个浏览器发出请求时就会自动创建一个sessionId来标识,访问量大的时候,session就多,session中的数据都是存储在服务器端的,所以当访问量一旦多的时候,服务器的资源被占用的也就太多了,服务器会不堪重负。而且session是有时间的,不想客户端一样,一请求回来就断开请求了,session还会保留着,默认都是20分钟。
作者: 平建    时间: 2012-7-2 14:59
我认为有两个关键点 原因,
第一的占用太多的服务器资源,
第二容易数据丢失。
作者: 蒋春    时间: 2012-7-2 23:18
首先Session对象是将数据存放在服务器,存放在Session中的数据过大,会多占用服务器的资源,给服务器带来负担,所以在session中不要存放过大的数据
作者: 王志波    时间: 2012-7-5 19:58
没错,session是存放在服务端的,数据过大,又占资源又占宽带的,反正不好。
作者: 秦永辉    时间: 2012-7-5 20:11
由于sessin保存在服务器端,如果放入太多的对象势必会造成服务器效率低,内存使用率高等问题,这种情况可以用cookies解决,但是cookies也有自己的缺点,所以要session和cookies结合使用!
作者: 常静华    时间: 2012-7-7 01:31
session存放在服务器端,每个客户端与服务器端连接是一个特殊开辟的通道,当通道内有大量的数据存放时就会出现数据堵塞,导致访问失效或连接失败!cookies是放在客户端的,但机密的文件不要放在cookies内,因为cookies好用但不安全!
作者: 戴水平    时间: 2012-7-8 12:08
Session虽然可以保存信息在整个网站使用但是这是在存储在服务器上,
如果Session这个集合存储大量的信息但是有没有及时清除的话就非常占用服务器的资源,有时导致服务器连接失败等情况。
一般都是Session和Cookies配合使用。一般不重要的数据就保存在Cookie中

作者: 侯慧杰    时间: 2012-7-8 17:02
因为Session里的数据是在服务端存放的,如果写太多Session的话会影响服务器的执行效率,客户端访问的速度就大大的降低




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2