cookie生成及日期设置:字符串格式的键值对存储,Response.Cookies.Append("userId","666",new CookieOptions{Expires=Datetime.Now.AddDays(7)});
cookie的删除:Response.Cookies.Delete("userId");看起来像是服务器删除了cookie,但不是,服务器无法删除cookie,它是将cookie过期时间设置为当前以前的时间(ASP.NET设置为1970年),然后发送给浏览器;
session:HttpContext.Session.SetInt32("age",33),
基于cookie,把主要数据存放于服务器(默认IIS的内存),只把session的Id存放在cookie中传递,服务器通过sessionId定位session数据;
session与cookie区别:
共同点:都是用来追踪浏览器用户身份的会话方式,弥补http无状态缺陷;
不同:
1,数据存放位置:cookie数据保存在客户端,session数据保存在服务器;
2,安全性:cookie不是很安全,因为可以伪造,考虑安全性,应使用session
3,性能:session会在一定时间内,保存在服务器上,当访问增多时,会比较占用服务器的性能,考虑减轻服务器性能时,应使用cookie;
4,限制:单个cookie保存的数据不超过4K,很多浏览器都限制一个站点最多保存20个cookie;
所以,应将登录等重要信息存放在session,其它数据可以存放在cookie中;
session存放位置:
存放位置 | 速度 | 特点 |
IIS进程中内存 | 最快 | 不稳定,因为IIS重启/Application pool回收等丢失 |
一个独立的windows服务 | 比较快 | 比较稳定,一般来说只有服务器重启才会丢失 |
数据库 | 不快 | 稳定,在指定的过期时间内不丢失;不担心size,大量session时使用 |
分布式缓存 | 同缓存 | 在数据库性能不足时使用 |