现在的位置: 首页 > 综合 > 正文

session相关

2012年08月05日 ⁄ 综合 ⁄ 共 1658字 ⁄ 字号 评论关闭

转自:http://www.cnblogs.com/leixiaoling/archive/2009/09/23/1572718.html

Session

<!--[if !supportLists]-->1.       <!--[endif]-->TimeOut 默认值为20分钟,最大值为1440分钟即24小时,如果设置的TimeOut值超过1440分钟,将出现错误提示”TimeOut 值无效”.

<!--[if !supportLists]-->2.       <!--[endif]-->Session 可以存在服务器上的:工作者进程内,另外一个单独的进程,数据库里(应用程序出问题时session里的值不会丢失还可以用)

<!--[if !supportLists]-->3.       <!--[endif]-->Session 什么时候会丢:A,过期,

B,(如果用的是Cookie存SessionID)清除Cookie. 

C.调用Abandon方法< % Session.Abandon %>

<!--[if !supportLists]-->4.       <!--[endif]-->session最大能存多少?session的容量没有限制仅受操作系统允许的最大文件尺寸限制( 因为Session是存在于服务器端的,即使关闭网页,Session仍然会占用服务器端内存,直到Session超时才会被释放(或者是你手工释放))

<!--[if !supportLists]-->5.       <!--[endif]-->Cookieless弊端:用Cookieless时SessionID是在URL里存储的, 由于url参数对于客户端是明文形式,相当不安全, 应尽量不使用url传递一些敏感的信息。但因url参数是web画面间交换信息的重要途径,故可以用url传递一些看上去无意义的文字。

<!--[if !supportLists]-->6.       <!--[endif]-->Application, session, cache, cookie , viewstate 区别:

<!--[if !supportLists]-->A.      <!--[endif]-->Application用来保存所有用户共用的信息,它的生存期跟应用程序同在,保存在服务器中

<!--[if !supportLists]-->B.      <!--[endif]-->Session用来保存每一个用户的专有信息,保存在服务器端(除sessionID)

<!--[if !supportLists]-->C.      <!--[endif]-->ViewState用来保存用户的状态信息,有效期等于页面的生命周期

<!--[if !supportLists]-->D.      <!--[endif]-->Cache用于在Http请求期间保存页面或者数据,   Cache的使用可以大大的提高整个应用程序的效率, 它允许将频繁访问的服务器资源存储在内存中,当用户发出相同的请求后服务器不是再次处理而是将Cache中保存的数据直接返回给用户. Cache[‘ID”]=”yiner”;或者Cache.Insert(“ID”,”test”);
String ID =Cache[“ID”].ToString();

 

为什么不能在session中存大量数据

session和普通Java对象最大区别就是:能不能被及时的GC
一个普通Java对象,一旦没有别的对象引用它,就可以被GC了。但是被session引用的对象,是无法被及时GC的,除非这个session被应用程序销毁,或者等待服务器超时以后销毁。
应用程序销毁session是非常不可靠的方式,用户不注销就关闭浏览器,网络访问中断等等异常事件都会导致session无法被注销。
应用服务器超时销毁session也非常不可靠的。实际上,应用服务器的session管理就是用一个Map来保存所有的session,定期轮询,销毁过期session。

 

 

 

 

抱歉!评论已关闭.