前端存储
一、Cookie
Cookie是一小段以key-value格式存储的文本信息。当客户端向服务器发送请求,如果服务器需要去记录客户端的状态,服务器端会生成一个Cookie,发送给客户端保存。会在浏览器下次向同一服务器再次发起请求时被携带并发送到服务器上,来判断用户当前的状态。通常用于告知服务器端两个请求是否来自同一浏览器。可以提高访问服务器的效率。
Cookie的特点:
- 长度和数量都有限制
长度不超过4KB;在不同的浏览器中,数量都不相同,IE6以下最多20个Cookie;IE7以后可以有50个; FireFox可以有50个;chrome和sqfri没有限制。 - 用户每请求一次,Cookie会随着请求发送到服务器
- Cookie可以设置过期时间,默认的是会话级别,即会话结束,自动销毁。
- 数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递
二、session会话
客户端第一次请求服务器端,服务器端会产生一个session对象,并且每个session对象都会有唯一的sessionID(用于区分其他的session) ,服务器端会产生一个Cookie,服务器在响应客户端的时候会将该Cookie发送给客户端,客户端的Cookie和服务器端的session一一对应。
二者区别
- Cookie的作用就是存储sessionID
- Cookie不安全,session相对安全。别人可以分析本地的Cookie进行Cookie欺骗;
- 单个Cookie的数据大小不能超过4KB,session存储的数据远大于Cookie;
- Cookie只能存储ASCII,而session可以存储任意数据类型;
- Cookie可设置时间保持,而session不能,很短时间内就会失效,如客户端关闭或者session超时;
- session在服务器端存储,当访问次数较多,会影响服务器的性能。
三、localStorage
始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据
localStorage 在所有同源窗口中都是共享的(Cookie一样)
- 永久存储
- 单个域名存储量比较大,一般5MB,各浏览器不同
- 总体数量无限制
四、sessionStroage
仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持,
- 只在session内有效
- 存储量更大(没有限制,实际上,各浏览器不同)
localStorage和sessionStroage都是在H5提供的本地存储方案。