谁解释一下session的生命周期
答案:2 悬赏:0 手机版
解决时间 2021-02-20 11:22
- 提问者网友:夢醒日落
- 2021-02-20 08:21
谁解释一下session的生命周期
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-02-20 09:35
session的生命周期是session会话域,打开一个浏览器请求一个网站的页面后,Session开始,当session超过时间限制(一般是30分种)后,session注销而失效 或是人为使用session.invalidate();使用session失效; 或是关闭浏览器后,session还存在,但是这里已经无法获取session了,过一会它还是失效。
全部回答
- 1楼网友:夜风逐马
- 2021-02-20 11:03
一般情况下,不管向服务器发送了多少次请求,只有当开始向session中存储会话状态数据时,session对象的生命周期才算真正开始,这一点不同于cache和application对象(application对象的生命周期开始于向网络应用程序发送第一个请求时)。当session对象为空,session对象的生命周期还没有开始,session id manager会为每一个请求页面赋予一个新的session id,且每一次请求都不相同,直到有数据存储在session对象中时,就按照图2所示的过程进行会话状态维护。有两个事件与session对象的生命周期密切相关,分别是session_onstart(会话开始)和session_onend(会话结束)。如果为session_onstart事件定义了处理程序(event handler),那么session的生命周期从第一次请求该页面就开始,该页面的session id一被赋予就不再改变,session即使为空也会被存储,因此,从性能的角度考虑,只有在必要时才为session_onstart事件定义事件处理程序。session_onend事件只有在inproc模式下,且session已经存在的前提下才能被触发,这是因为该事件是由cache对象在删除失效的session对象时触发,可在该事件的处理程序中通过编码终止session对象。
最后,再补充一点。由上面的讨论可知,session 对象的实现与cache对象有着密切联系,尤其是再inproc模式下,但是session不能提供和cache那样丰富的缓存过期和依赖机制。在inproc模式下,session对象中的数据是否失效,只能通过设定sliding time来控制,即在指定的时间间隔内没用使用session中的数据,数据自动删除。且考虑cache自身的特点,session中的数据也可能在服务器端内存资源不足的情况下,由于内存回收而丢失。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯