Cookie、sessionStorage、localStorage 的区别
cookie
Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息。每个cookie不能超过 4KB,每个 Web 站点能设置的 Cookie 总数不能超过 20 个
localStorage
在 Web 中可以存储数量巨大的数据。具体的数量则取决于 Web 浏览器,但通常都在 5MB 到10MB 之间,这对于一个 HTML应用程序而言已经足够大。好处是此数据并不会在每次出现服务器请求时都被加载。
localStorage 没有时间限制的数据存储,也就是说,localStorage是永远不会过期的,除非主动删除数据。数据可跨越多个窗口,无视当前会话,在同一个域中被共同访问、使用。
sessionStorage
短期存储,页面关闭后存储消失,其他与长期存储一样
针对一个 session 的数据存储,任何一个页面存储的信息在窗口中同一域下的页面都可以访问它存储的数据。每个窗口的值都是独立的,它的数据会因窗口的关闭而丢失,不同窗口间的sessionStorage是不可以共享的。
三种存储方式的区别总结
相同点
都保存在浏览器端,同源的
不同点
- 传递方式不同
- cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。
- sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
- 数据大小不同
- cookie数据不能超过4k
- sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
- 数据有效期不同
- cookie只在设置的cookie过期时间之前一直有效。
- sessionStorage:仅在当前浏览器窗口关闭前有效。
- localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;