cookie, sessionStorage, localStorage之间的差异
共同点:
它们都保存在浏览器,且同源的;
不同点:
- cookie 数据始终在同源的 http 请求中携带(即使不需要),也就是说 cookie 在浏览器和服务器之间来回传递,而 session Storage 和 local Storage 不会自动把数据发送给服务器,仅在本地保存。cookie 还有(path)的概念,可以限制 cookie 只属于某个路径下。
- 存储大小的限制也不同,cookie 数据不能超过4k, 因为每次http请求都会携带 cookie, 所以 cookie 只适合存很小的数据,比如会话标识;session Storage 和 local Storage 虽然也有存储大小限制,但比 cookie 大得多,可以达到5K或者更多。
- 数据有效期不同,sessionStorage: 仅在当前浏览器窗口关闭之前有效;localStorage: 始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie: 只在设置的 cookie 过期时间之前有效,即使窗口关闭或者浏览器关闭。
- 作用域不同,sessionStorage: 不在不同的浏览器窗口共享,即使是同一页面;localStorage:在所有同源窗口中都是共享的;cookie 也是在所有同源窗口中共享的。
- web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者;
- web Storage 的api接口使用更方便;