指对同一页或不同页的多个请求维护状态和页信息的过程
Web页是无状态的,不保存任何用户请求信息,而且到服务器的每一往返过程都将销毁并重新创建页,所以超出单个页的生命周期之后,页信息将不存在。
指示用户信息
使得页与页之间、请求与请求之间能够共享信息
更为快速的数据存储和读取
对于会话状态存储器,ASP.NET提供了3个选项,通过模式设置和相关的属性对其进行配置:
=”[Off|InProc|StateServer|SQLServer] ”
InProc模式速度比较快,但是每次重新启动IIS都会导致Session丢失。利用后两种模式,只能保存序列化的对象,但我们可以把Session从Web服务器中独立出来,从而减轻Web服务器的压力,同时减少Session丢失的概率。 三种模式的Session比较
|
InProc |
StateServer |
SQLServer | |
|
存储物理位置 |
IIS进程(内存) |
Windows服务进程(内存) |
SQLServer数据库(磁盘) |
|
存储类型限制 |
无限制 |
可以序列化的类型 |
可以序列化的类型 |
|
使用范围 |
当前请求上下文,对于每个用户独立 | ||
|
生命周期 |
第一次访问网站的时候创建Session超时后销毁 | ||
|
优点 |
性能比较高 |
Session不依赖Web服务器,不容易丢失 | |
|
缺点 |
容易丢失 |
序列化与反序列化消耗CPU资源 |
序列化与反序列化消耗CPU资源,从磁盘读取Session比较慢 |
|
使用原则 |
不要存放大量数据 |
||
HttpCookie cookieValCode = new HttpCookie("ValCode", strValCode);
cookieValCode.Expires = DateTime.Now.AddMinutes(10);
Response.Cookies.Add(cookieValCode);
Request.Cookies["ValCode"].Value
HttpCookie cookieValCode = Request.Cookies["ValCode"];
cookieValCode.Expires = DateTime.Now.AddMinutes(-1);
Response.Cookies.Add(cookieValCode);
ASP.Net Session, Cookie, Cache的区别
原文:http://www.cnblogs.com/Jessy/p/3541720.html