Session学习总结

    小编在上篇博客的时候对Cookie进行了详细介绍,并通过一个小实例演示了Cookie的基本功能。(欲知详情,请点击链接:http://blog.csdn.net/fengkungui/article/details/50637412)小编在做项目的时候,一直对cookie和session区分不清,通过一段时间的学习,掌握了其基本知识。下面将我的收获分享给大家,如有不妥之处,还望大家批评指正。

【基本介绍】

    通俗来说,Session就是在计算机中,尤其是在网络应用中的会话控制。Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。具体到Web中的session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。(session实际上是一个特定的时间概念

【基本特征】

常规特性:

1. Session是一种Web会话中的常用状态之一。

2. Session提供了一种把信息保存在服务器内存中的方式。它能存储任何数据类型,包含自定义对象

3. 每个客户端的Session是独立存储的

4. 当会话终止,或过期时,服务器就清除Session对象

5. Session常用于保存登录用户ID,且保存的数据是跨页面全局型的。

局限性:

1、   Session状态使用范围的局限性

当一个用户从一个网站访问到另外一个网站时,这些Session信息并不会随之迁移过去。例如:新浪网站的WWW服务器可能不止一个,一个用户登录之后要去各个频道浏览,但是每个频道都在不同的服务器上,这个时候就无法实现Session的读取。

2、   Cookie的依赖性

实际上客户端的Session信息是存储与Cookie中的,如果客户端完全禁用掉了Cookie功能,他也就不能享受到了Session提供的功能了。

3、   进程依赖性

ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。所以当inetinfo.exe进程崩溃时,这些信息也就丢失。另外,重起或者关闭IIS服务都会造成信息的丢失。

【主要用途】

1、   网上购物车

2、   获取用户登录网页时的用户信息

3、   将某些数据放入session中,供同一用户的各个页面使用

【生存周期】

1、   创建:当客户端第一次访问网页时,服务器会为当前会话创建一个SessionId,每次客户端向服务端发送请求时,都会将此SessionId携带过去,服务端会对此SessionId进行校验。

2、   销毁:Session过期(默认20分钟后session被服务器自动销毁)、服务器重新启动。

【知识拓展】

1、   关于session使用状态的局限性问题,可以设置session为共享。

2、   对于session的cookie依赖性,可以在cookie设置为禁用的时候直接存储其url

3、   对于session的20分钟后过期的问题,可以设置自动更新时间(自动更新时间小于20分钟)即可。

4、   session是怎么存储,提取的?

    在服务器端有一个session池,用来存储每个用户提交session中的数据,Session对于每一个客户端(或者说浏览器实例)是“人手一份”,用户首次与Web服务器建立连接的时候,服务器会给用户分发一个SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端,而这个SessionID是一cookie的方式保存的在客户端的内存中的,如果想要得到Session池中的数据,服务器就会根据客户端提交的唯一SessionID标识给出相应的数据返回。输入正确的账号密码,点击登录,页面就会输出“admin --- 点击登录”

【Session与Cookie异同】

 

Cookie

Session

存储位置

本机客户端

服务端

安全级别

高(不受浏览器设置影响,独立在服务器端)

失效设置

时间可设置

浏览器关闭即失效

未完待续…

 

【学习小结】

    通过一段时间的对比学习对cookie、session、Memcached这三个不同的缓存机制有了新的认识。这三个虽说都可以达到缓存的效果,但是应用场景有所差异,需要我们在实际的应用中具体问题具体分析。

 

posted @ 2016-02-24 20:06  幻想泡沫  阅读(154)  评论(0编辑  收藏  举报