特性 | cookie | sessionStorage | localStorage |
---|---|---|---|
数据生命期 | 生成时就会被指定一个maxAge值,这就是cookie的生存周期,在这个周期内cookie有效,默认关闭浏览器失效 | 页面会话期间可用 | 除非数据被清除,否则一直存在 |
存放数据大小 | 4K左右(因为每次http请求都会携带cookie) | 一般5M或更大详细看这(需科学上网) | 同sesionStorage |
与服务器通信 | 由对服务器的请求来传递,每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题 | 数据不是由每个服务器请求传递的,而是只有在请求时使用数据,不参与和服务器的通信 | 同sesionStorage |
易用性 | cookie需要自己封装setCookie,getCookie | 可以用源生接口,也可再次封装来对Object和Array有更好的支持 | 同sesionStorage |
共享性 | 不同浏览器无法共享localStorage或sessionStorage中的信息 | 同sesionStorage | |
共同点 | 都是保存在浏览器端,和服务器端的session机制不同(这里有一篇很好的介绍cookie和session的文章) | 都是保存在浏览器端,和服务器端的session机制不同(这里有一篇很好的介绍cookie和session的文章 | 都是保存在浏览器端,和服务器端的session机制不同(这里有一篇很好的介绍cookie和session的文章 |
相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是,页面及标 签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的