cookie && localStorage && sessionStorage
sessionStorage 、localStorage 和 cookie 之间的区别
共同点:都是保存在浏览器端,且同源的。
区别:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递;cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。
而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。 sessionStorage和localStorage虽然也有存储大小限制,但比cookie大得多,可以达到5M或更大。
数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage在所有的同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage支持事件通知机制,可以将数据更新的通知发送给坚挺者。Web Storage 的 api接口使用更方便。
cookie:存储在用户本地终端上的数据,有时也用cooikes,同名的 cookie,不同的 domain 或不同的 path,属不同的 cookie;同名的 cookie,相同的 domain 且相同的 path,不同的 expires,属同一个 cookie,cookie中每条cookie的存储空间为4k,
localStorage:一般浏览器支持的是5M大小,没有时间限制的数据存储,第二天、第二周或下一年之后,数据依然可用。
优势:1、localStorage拓展了cookie的4k限制
2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的
局限:1、浏览器的大小不统一,并且在ie8以上的ie版本才支持localStorage这个属性
2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换
3、localStorage在浏览器的隐私模式下面是不可读取的
4、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡,只支持string类型的存储
5、localStorage不能被爬虫抓取到
localStorage的使用也是遵循同源策略的,所以不同的网站直接是不能共用相同的localStorage
localStorage与sessionStorage的唯一一点区别就是localStorage属于永久性的存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空
localStorage的写入方法
localStorage 的读取方法
官方推荐的是getItem\setItem这两种方法对其进行存取
localStorage 的修改方法
localStorage 的删除方法
localStorage的键获取,使用key()方法,向其中出入索引即可获取对应的键
localStorage 其他注意事项
一般我们会将JSON存入localStorage中,但是在localStorage会自动将localStorage转换成为字符串形式,这个时候,我们可以使用JSON.stringify()这个方法,来将JSON转换成为JSON字符串
读取之后要将JSON字符串转换成为JSON对象,使用JSON.parse()方法,其他类型读取出来也需要转化
注:参考大神资料,个人笔记记录
网友评论