Cookie和Session
浏览器一般都有缓存,而浏览器里面的缓存就是 Cookie 和 Session 缓存。浏览器有缓存作用,而 Cookie 和 Session 机制就是用来记录缓存的。
浏览器有两种缓存机制:Cookie 的缓存机制以及 Session的缓存机制,它们都能实现缓存的作用。
那么Cookie 和 Session有什么不同呢?
-
Cookie 和 Session
(1)Cookie又意为“甜饼”,现在所有的主流浏览器都支持Cookie。
平时浏览器进行Http缓存的时候,因为Http是没有状态的协议,所以Http是没有缓存记录的。使用Http请求时,当客户端把数据发送到服务器端之后,客户端和服务器端两个部分的连接就会立马关闭,之后两端想要再一次传递数据,就要重新创建一个链接。也就是说,客户端和服务器端两个部分的连接是一次性的,而且后续无法追踪,这就是Http请求的一个bug。而Cookie 的缓存机制可以弥补Http协议没有状态的不足,Cookie就是为了弥补Http协议的不足而出现的。下图为Cookie工作时的基本情况。(下图来自网络)
(2)Session的作用是在客户端访问服务器端的时候,服务器端把客户端传递过来的信息记录在服务器上。Session中有很多的方法,在使用上比 Cookie要方便。但是Session将数据传递到浏览器里的时候,数据是传递导Cookie里面保存的,所以,Session对Cookie 有依赖性,如果不要Cookie,那么使用Session就会变得麻烦。下图为Session工作时的基本情况。(下图来自网络)
2.Cookie 和 Session 在浏览器中保存在不同的位置。
浏览器缓存分为两个部分,一个是客户端缓存,另一个是服务器缓存。Cookie 以文本的格式保存在客户端,在客户端记录信息,而且存储量很有限;Session 保存在服务器端,在服务器端记录信息,虽然Session存储量大,但是Session在使用上要比Cookie简单。 -
Cookie 和 Session 有效期的不同:
Cookie的有效期以秒为单位。Cookie 可以设置过期时间,如果Cookie 设置了过期时间,那么这个Cookie就会一直保存到超过过期的时间之前;如果Cookie不设置过期时间,那么这个Cookie的有效期为浏览器会话期间,浏览器关闭,Cookie也就失效了。
Session的有效期也是可以控制的,因为Session存储量大,所以占用内存多,服务器为了不浪费内存,会把长时间没有使用过的Session 删除,也就是说,当一个客户长时间没有访问Session,这个客户的Session就会失效。