首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Session基础(未定稿)

2013-03-12 
Session基础(初稿)? ? ? ? ? session机制是web开发中十分常见的,也已经被使用了一段时间了,已经十分成熟。

Session基础(初稿)

? ? ? ? ? session机制是web开发中十分常见的,也已经被使用了一段时间了,已经十分成熟。而它的作用,暂时对我来说就是记录“用户”的信息。用于http是无状态协议的限制,客户端与服务器之间没有长久的连接。可以说每一次的访问都是一次新的连接。所以说,问题就出现了,在很多时候需要对不同的“用户”实现不用的服务,按需分配也十分节省资源。这时候就需要一种机制来识别要求访问的客户是谁?session的作用既是如此。

? ? ? ? ?session是如何工作的呢。首先当一个用户(客户端)首次要求访问服务器的时候,服务器端会单独为其开辟一块空间用于保存用户信息,并且产生一个唯一标示sessionID(由于是16位无规则字符串,估计是由MD5算法产生)。并把这个ID随着服务器的相应HTML文件发送回客户端。并由客户端保存起来(位于客户端cookie中,但具体是硬盘上还是内存中由客户端自行选择),当其在此向同一服务发送请求时,会把此ID取出,一并发送过去。然后服务器就会取出这个ID进行检索,从而识别这个用户就是上一个用户(如果检索失败就会重新创建session,即相当于首次访问)。举个例子来说明,就如同你去一家饭店吃饭,这个饭店使用会员制。当你来消费满1000元时,会赠送XXX物品。但是一次吃饭很难消费掉1000元,所以只有多次消费才能达到。这是就需要一种辨别身份的工具,才能方便记录你的吃饭花费总数。这是饭店在你第一次消费时就会给你一张会员卡,上面用一唯一的卡号,只要你每次吃饭都掏出这张卡,店员就会通过卡号来查找出你的记录,也就识别了你这个人。sessionID就是会员卡号。服务器也就像员工一样可以在记录表中记录一切需要记录的用户信息,方便在其向此访问时使用。

? ? ? ? ? session的失效。饭店的记录表虽然是可以无限使用的,但是服务器的内存确是十分有限的。不可能把所用用户的session永久保留,要在合适的时间删除掉。但是什么时候删除呢,因为http协议的问题,服务器是无法判定用户已经关闭了浏览器甚至电脑。他只能识别用户的活动时间。所以现在最常用的session失效方法就是时间判定,当一个用户不在活动一定时间后即判定该用户的session失效。当然也可以用户本身告知浏览器,让其session失效,就相当于你去饭店注销的你的会员卡一样。服务器关闭也会使所用的session失效,但是有些会在关闭前将所用session信息保存在硬盘中,在此启动时再取出来,这样就可以持续保存session了。 ? ? ?

热点排行