一:本地存储(localstorage IE8以上支持)
1-特点:永久存储 永不失效 除非手动删除
2-大小:每个域名5m
3-存储方式:以键值对(key-value)的方式存储
localStorage.setItem("key","value"):设置记录 添加存储内容
localStorage.getItem("key"):取出存储内容
localStorage.removeItem("key"):清除某个键值
localStorage.clear():清除所有存储内容
4-注意:一般我们会将JSON存入localStorage中,但是在localStorage会自动将localStorage转换成为字符串形式,这个时候我们可以使用JSON.stringify()这个方法,来将JSON转换成为JSON字符串
eg:var storage=window.localStorage;
var data={
name:'xiecanyong',
sex:'man',
hobby:'program'
};
var d=JSON.stringify(data);
storage.setItem("data",d);
//将JSON字符串转换成为JSON对象输出
var json=storage.getItem("data");
var jsonObj=JSON.parse(json);
console.log(typeof jsonObj);
5-局限:浏览器的大小不统一,并且在IE8以上的IE版本才支持
localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡
6-存储类型:数组,图片,json,样式,脚本。。。(只要是能序列化成字符串的内容都可以存储)
二:会话存储(sessionStorage)
localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localStorage 则会一直保存。
三:web storage和cookie的异同
1-:Web Storage数据完全存储在客户端,不需要通过浏览器的请求将数据传给服务器,因此相比cookie来说能够存储更多的数据,大概5M左右。
2-共同点:都是保存在浏览器端,且同源的。
区别:
cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。
WebStorage 支持事件通知机制,可以将数据更新的通知发送给监听者。
WebStorage的 api 接口使用更方便。