客户端状态的存储空间——Session
http协议在设计之初被设计成无状态特性,客户端的每次请求在服务端看来都是独立且无任何相关性,同一个客户端第一次请求不会与第二次请求有任何关联,即使相隔时间很短。无状态的特性让请求变得很快速且服务器也更加高效,但是随着人们对浏览器功能要求的不断提高,由于无状态导致的不足更加明显,因为有些场景下本次处理需要用到之前的请求的一些信息,如果单纯靠http协议而没有额外的机制是无法办到的。
为了提供一种让一定时间内的每次请求都拥有记忆的会话机制,需要依靠http协议的基础上提供一种解决方案,当然由于涉及到相关信息的存储,所以需要在http协议外另外提供存储介质,通信的主体无非就是客户端和服务端,于是人们可以想到的就是借客户端或服务端存储状态信息,后来基于这两端的存储的方式都被支持。在客户端,一种叫做cookie的小文本被生成并存放在客户端的指定目录,每次请求时浏览器会从cookie找出此次请求服务器希望得到的一些状态并附加到http协议头部传往服务端,服务端由此实现通信的状态性;在服务端,有时需要保存的信息量很大,存放在客户端会导致一个问题,即每次客户端请求都要携带大量的信息到服务端,传输效率低下,这时如果把客户端的信息都放在服务端就能避免大量附加信息的传输,仅仅只要携带一个识别编号到服务端即可,服务端根据此编号找到此客户端对应的保存信息,至此实现通信的状态性。
所以两种方式可以用下图表示,上面的为客户端模式,客户端每次请求都会将本地保存的状态一起传到服务端,服务端通过这些状态便可以辨别哪个客户端的某些状态。而下面的图则是服务端模式,这时客户端要传的仅仅是一个id编号,它其实是客户端的身份标识,而其他状态变量保存在服务端,通过客户端id可以找到对应客户端的状态变量,所有客户端的状态被统一存放在服务端进行管理。
对java感兴趣的朋友可以交个朋友:
客户端状态的存储空间——Session的更多相关文章
- [Asp.Net]状态管理(Session、Application、Cache)
上篇博文介绍了在客户端状态管理的两种方式:http://www.cnblogs.com/wolf-sun/p/3329773.html.除了在客户端上保存状态外,还可以在服务器上保存状态.使用客户端的 ...
- 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法
转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...
- 动手学习TCP:客户端状态变迁
上一篇文章中介绍了TCP连接的建立和终止. 通过实际操作了解到,在TCP协议工作过程中,客户端和服务端都会接收或者发送特定标志的TCP数据包,然后进入不同的状态. 也就是说,TCP协议就是一个包含多种 ...
- ASP.NET状态服务及session丢失问题解决方案总结
原文:ASP.NET状态服务及session丢失问题解决方案总结[转载] asp.net Session的实现: asp.net的Session是基于HttpModule技术做的,HttpModule ...
- redis查看redis 客户端状态
查看redis客户端连接 redis-cli info clients # Clients connected_clients:6000 client_longest_output_list:0 cl ...
- ASP.NET 状态服务 及 session丢失问题解决方案总结
ASP.NET2.0系统时,在程序中做删除或创建文件操作时,出现session丢失问题.采用了如下方法:1.asp.net Session的实现:asp.net的Session是基于HttpModul ...
- 如果客户端禁用cookie,session还能使用吗?
记得在以前找工作的时候,可多次被问到如果客户端被禁用cookie,session还能使用吗? 今天终于找到了相关的答案:我们来看一下: session是在服务器段保持会话数据的一种方法,对应的cook ...
- [转]ASP.NET 状态服务 及 session丢失问题解决方案总结
转自[http://blog.csdn.net/high_mount/archive/2007/05/09/1601854.aspx] 最近在开发一ASP.NET2.0系统时,在程序中做删除或创建文件 ...
- Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期
servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...
随机推荐
- EasyUI常用组件(基础)
---------------------------------------------------------------------------------------------------- ...
- How To Handle MLOG$_AP_SUPPLIER_SITES_AL, MLOG$_AP_SUPPLIERS Growing So Much? Having Lots of Data
How To Handle MLOG$_AP_SUPPLIER_SITES_AL, MLOG$_AP_SUPPLIERS Growing So Much? Having Lots of Data (文 ...
- java获取ip的方式,注意多级代理的方式获取
public String getIP() { String clientIP = ServletActionContext.getRequest().getHeader("x-forwar ...
- Ubuntu LTS 系统学习使用体会和实用工具软件汇总 6.04 8.04 10.04 12.04 14.04 16.04
Ubuntu LTS 系统学习体会和工具软件汇总 6.04 8.04 10.04 12.04 14.04 16.04 ubuntu入门必备pdf:http://download.csdn.net/de ...
- 23 广播服务结合音乐Demo5
MainActivity.java package com.dmy.demo5; import android.app.Activity; import android.content.Broadca ...
- OpenCV+python 人脸识别
首先给大家推荐一本书:机器学习算法原理与编程实践 本文内容全部转载于书中,相当于一个读书笔记了吧 绪论 1992年麻省理工学院通过实验对比了基于结构特征的方法与基于模版匹配的方法,发现模版匹配的方法要 ...
- 关于在页面中针对不同版本的IE浏览器实现不同的JS或者CSS样式
一般会用到<!--[if IE]>这里是正常的html代码<![endif]--> 条件注释只能在windows Internet Explorer(以下简称IE)下使用,因此 ...
- [Pelican]Pelican入门(一)
听说这个静态博客很好用,最近又在协助"蟒周刊"翻译,于是先学习下基本的用法 office site You can startup for here. 安装环境 我的os是win7 ...
- 乐观的并发策略——基于CAS的自旋
悲观者与乐观者的做事方式完全不一样,悲观者的人生观是一件事情我必须要百分之百完全控制才会去做,否则就认为这件事情一定会出问题:而乐观者的人生观则相反,凡事不管最终结果如何,他都会先尝试去做,大不了最后 ...
- 安卓如何快速更新SDK
打开SDK Manager,点击tools->options打开,如图: Proxy Setting如下设置: HTTP Proxy server:mirrors.neusoft.edu.cn ...