中国龙,中国风,中国会变得更加强大! 力量越大,责任越大! 人的一生,会面临很多选择,但决定一个人一生的,往往就是最关键那么的一两步

Session对象的原理

上一篇 / 下一篇  2008-12-09 17:14:10 / 个人分类:开发知识


Session的实现而言,好像是这样的:  
(1)当有Session启动时,服务器生成一个唯一值,称为SessionID(好像是通过取进程ID的方式取得的)。  
(2)然后,服务器开辟一块内存,对应于该SessionID。  
(3)服务器再将该SessionID写入浏览器的cookie。  
(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放改内存块。  
   
(5)当浏览器连入IIS时并请求的ASP内用到Session时,IIS就读浏览器Cookie中的SessionID。  
(6)然后,服务检查该SessionID所对应的内存是否有效。  
(7)如果有效,就读出内存中的值。  
(8)如果无效,就建立新的Session。  
   
注意:  
(1)在大浏览量的网站,Session并不安全保险,我们过去的网站就经常碰到存在Session中得值不正确(可能出现重复的SessionID)。  
(2)SessionID不能从硬盘上的Cookie文件获得,如果想在客户端获知自己的SessionID,只能通过Javascrīpt来读取。

这里用一个形象的比喻来解释session的工作方式。假设Web Server是一个商场的存包处,HTTP Request是一个顾客,第一次来到存包处,管理员把顾客的物品存放在某一个柜子里面(这个柜子就相当于Session),然后把一个号码牌交给这个顾客,作为取包凭证(这个号码牌就是Session ID)。顾客(HTTP Request)下一次来的时候,就要把号码牌(Session ID)交给存包处(Web Server)的管理员。管理员根据号码牌(Session ID)找到相应的柜子(Session),根据顾客(HTTP Request)的请求,Web Server可以取出、更换、添加柜子(Session)中的物品,Web Server也可以让顾客(HTTP Request)的号码牌和号码牌对应的柜子(Session)失效。顾客(HTTP Request)的忘性很大,管理员在顾客回去的时候(HTTP Response)都要重新提醒顾客记住自己的号码牌(Session ID)。这样,顾客(HTTP Request)下次来的时候,就又带着号码牌回来了。


TAG: session 对象 开发知识

 

评分:0

我来说两句

Open Toolbar