localstorage
定义和使用
- localStorage 和 sessionStorage 属性允许在浏览器中存储 key/value 对的数据。
- localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去删除。
- localStorage 属性是只读的。
语法
- 保存数据
localStorage.setItem("key", "value");
- 读取数据
var lastname = localStorage.getItem("key");
- 删除数据
localStorage.removeItem("key");
- 将localStorage的所有内容清除
localStorage.clear();
localStorage 的优势
- localStorage 拓展了 cookie 的 4K 限制。
- localStorage 会可以将第一次请求的数据直接存储到本地,这个相当于一个 5M 大小的针对于前端页面的数据库,相比于 cookie 可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的。
localStorage 的局限
- 浏览器的大小不统一,并且在 IE8 以上的 IE 版本才支持 localStorage 这个属性。
- 目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换。
- localStorage在浏览器的隐私模式下面是不可读取的。
- localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡。
- localStorage不能被爬虫抓取到。
一般我们会将 JSON 存入 localStorage 中,但是在 localStorage 会自动将 localStorage 转换成为字符串形式。这个时候我们可以使用 JSON.stringify() 这个方法,来将 JSON 转换成为 JSON 字符串。读取之后要将 JSON 字符串转换成为 JSON 对象,使用 JSON.parse() 方法
cookie
// 创建 cookie
document.cookie = "username=Bill Gates";
// 添加有效日期(UTC 时间)。默认情况下,在浏览器关闭时会删除 cookie
document.cookie = "username=John Doe; expires=Sun, 31 Dec 2017 12:00:00 UTC";
// 通过 path 参数,您可以告诉浏览器 cookie 属于什么路径。默认情况下,cookie 属于当前页。
document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";
// 读取 cookie:
var x = document.cookie;
/*
删除 cookie
删除 cookie 时不必指定 cookie 值
直接把 expires 参数设置为过去的日期即可
*/
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
document.cookie 会在一条字符串中返回所有 cookie,比如:cookie1=value; cookie2=value; cookie3=value;
sessionStorage
- sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。
语法
- 保存数据语法:
sessionStorage.setItem("key", "value");
- 读取数据语法:
var lastname = sessionStorage.getItem("key");
- 删除指定键的数据语法:
sessionStorage.removeItem("key");
- 删除所有数据:
sessionStorage.clear();