什么是Session?
发布时间:2023-09-04 14:01:47 所属栏目:教程 来源:
导读:Session 是另一种记录客户状态的机制,不同于 Cookie 保存在客户端浏览器中,Session 数据时保存在服务器上。浏览器访问服务器的时,服务器会把客户端信息以某种形式记录在服务器上,这些数据就是 Session。客户端浏
Session 是另一种记录客户状态的机制,不同于 Cookie 保存在客户端浏览器中,Session 数据时保存在服务器上。浏览器访问服务器的时,服务器会把客户端信息以某种形式记录在服务器上,这些数据就是 Session。客户端浏览器再次访问时只需要从该 Session 中查找该客户的状态就可以了。 Cookie 机制是通过检查客户身上的“通行证”来确定客户身份,Session 机制是通过检查服务器上的“客户明细表”来确认客户身份。Session 相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。 当多个客户端执行程序时,服务器会保存多个客户端的 Session。获取 Session 的时候也不需要声明获取谁的Session。Session 机制决定了当前客户只会获取到自己的 Session,而不会获取到别人的 Session。各客户的Session 也彼此独立,互不可见。 Session 的使用虽然比 Cookie 方便许多,但是过多的 Session 存储在服务器内存中,会对服务器造成压力。 Session的生命周期 这里我们谈谈 Session 的生命周期,和 Cookie 有所不同。首先 Session 保存在服务器端,为了获得更高的存取速度,服务器一般把Session放在内存里。Session 会在用户第一次访问服务器的时候自动创建。Session 生成后,只要用户继续访问,服务器就会更新 Session 的最后访问时间,并维护该 Session。用户每访问服务器一次,无论是否读写 Session,服务器都认为该用户的 Session “活跃”了一次。 由于会有越来越多的用户访问服务器,因此 Session 也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的 Session 从内存删除。这个时间就是 Session 的超时时间。如果超过了超时时间没访问过服务器,Session 就自动失效了。 Cookie 和 Session 之间的区别 介绍完了 Cookie 和 Session 之后,我们现在来看看二者的区别,当然最大的区别前面已经反复强调过了: Cookie 数据存放在客户的浏览器上,Session 数据放在服务器上; 上面的区别也导致了 Cookie 和 Session 之间安全性的差别。Cookie 数据保存在用户端,数据容易被窃取,不太安全。虽然对 Cookie 中的敏感信息加密可以暂时规避安全风险,但即使加密数据被泄露了总归是不好的;Session 数据存储在服务器,可以有效规避信息泄露问题; Cookie 和 Session 之间生命周期不同,具体可以看前面两个的介绍; 单个 Cookie 保存的数据不能超过4K,很多浏览器都会限制一个站点最多保存20个 Cookie,且只能保存字符串内容;对于 Session 则没多少限制,Session 可以保存复杂的数据类型,而且数量没有限制,主要是访问用户太多后,容易造成服务器内存溢出。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |