网站内容更新机制( 另一种解决方案记录客户状态的机制,session的重写原理)

优采云 发布时间: 2022-02-24 03:14

  网站内容更新机制(

另一种解决方案记录客户状态的机制,session的重写原理)

  

  Session 是另一种记录客户端状态的机制,区别在于 cookie 存储在客户端浏览器中,而 session 存储在服务器上。当客户端浏览器访问服务器时,服务器以某种形式将客户端信息记录在服务器上,这就是会话。当客户端浏览器再次访问时,只需要从会话中查找客户端的状态即可。会话相当于由服务器上的程序创建的用户配置文件。用户访问时,只需要查询*敏*感*词*表即可。

  会话生命周期和有效期

  服务器为了获得更高的访问速度,一般会将会话放在内存中。每个用户将有一个单独的会话。如果会话内容过于复杂,可能会在大量客户端访问服务器时造成内存溢出。虽然使用 session 比 cookie 方便,但是太多的 session 存储在服务器内存中,会给服务器带来压力。因此,会话中的信息应尽可能简洁。

  当用户第一次访问服务器时,会自动创建一个会话。会话生成后,只要用户继续访问,服务器就会更新会话的最后一次访问时间并保持会话。

  随着越来越多的用户访问服务器,将会有越来越多的会话。为防止内存溢出,服务器会从内存中删除长时间未激活的会话。这个时间是会话超时。如果在超时时间之后还没有访问服务器,会话将自动失效。

  会话和 cookie

  虽然会话存储在服务器上,但它的正常运行仍然需要客户端浏览器的支持。这是因为会话需要使用 cookie 作为标识符。HTTP协议是无状态的,session不能根据HTTP连接判断是否是同一个客户端,所以服务器向客户端浏览器发送一个名为SESSIONID的cookie,其值为session的id。Session 根据这个 cookie 识别是否是同一个用户。

  对于不支持cookies的手机浏览器,还有另一种解决方案:URL地址重写。URL地址改写的原理是将用户会话的id信息改写成URL地址,服务端可以解析改写后的URL得到会话id。这样,即使客户端不支持cookies,也可以通过session来记录用户状态。

  应用场景

  通过会话积累用户数据。例如,一个未登录的用户访问京东网站,此时京东向其发送了一个cookie。假设cookie的名字是abc,那么这条记录就是abc=001。同时,京东后台也会生成一个cookie。session id,它的值也是001, 001 客户在2:00, 3:00, 4:00 分别在购物车中添加了三件商品,所以后台也记录了session id为001的用户已经有三件商品了购物车商品,只要客户端cookie带来的值中收录session id,后台就可以显示相应的数据。如果此时在浏览器中清除cookie,cookie数据消失后,后台与客户端无法建立对应关系,购物车数据将失效。

  单点登录是通过会话实现的。用户帐号登录成功后,在会话过期之前,同一帐号无法登录其他机器。登录后,将用户信息保存到会话中。如果此时请求同一个账号登录另一台机器,通过遍历(遍历意味着查看所有会话)web服务器中的所有会话,判断它们是否收录相同的用户信息,如果有,则无法登录该账号在另一台机器上。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线