一、概念
Cookie,类型属于“小型文本文件”,大部分是为了辨别身份信息,进行Session跟踪而存储在用户本地终端上的数据(加密过),一般由用户客户端的计算机暂时或永久性保存的信息。
Web Storage实际上由两个部分组成,sessionStorage与localStorage。seeionStorage用于本地存储一个会话(session)中的数据,这些数据只要在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁(简单来说就是关闭浏览器时,数据就清空了)。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。localStorage用于持久化的本地存储,除非主动删除数据,否则数据不会消失(简单来说要是自己不在本地存储删除,浏览器关闭也没用,它并不会清除)
二、共同点
都是保存在浏览器端、且同源的
三、区别
1、cookie数据始终在同源http请求中携带(及时不需要),即cookie在浏览器和服务器间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
2、存储大小限制也有不同,cookie数据不能超过4K,同时因为每次http请求都会携带cookie、所以cookie只适合很小的数据,如会话标识。sessionStorage和localStorage虽然也有储存大小的限制,但比cookie大得多,可以达到5M或更大。
3、数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭之前有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie:只在设置的cookie过期时间之前有效,即使窗口关闭或浏览器关闭。
4、作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。
5、Web Storage支持事件通知机制,可以将数据更新的通知发给监听者。
6、Web Storage的api接口使用更方便