HTML5的本地存储
在客户端存储数据
HTML5 提供了两种在客户端存储数据的新方法:
localStorage
:没有时间限制的数据存储sessionStorage
:针对一个 session 的数据存储
之前,这些都是由cookie
完成的,但是cookie
不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得cookie
速度很慢而且效率也不高。
在 HTML5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。
对于不同的网站,数据存储于不同的区域,并且一个网站只能访问其自身的数据。
HTML5 使用 JavaScript 来存储和访问数据
当浏览器进入隐私浏览模式,会创建一个新的、临时的数据库来存储local storage的数据;当关闭隐私浏览模式时,该数据库将被清空并丢弃。
localStorage
localStorage的优势和局限
localStorage的优势
localStorage
拓展了cookie
的4K限制localStorage
会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie
可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的
localStorage的局限
浏览器的大小不统一,并且在IE8以上的IE版本才支持
localStorage
这个属性目前所有的浏览器中都会把
localStorage
的值类型限定为string
类型,这个在对我们日常比较常见的JSON对象类型需要一些转换localStorage
在浏览器的隐私模式下面是不可读取的localStorage
本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡localStorage
不能被爬虫抓取到
localStorage的使用
写入
localStorage
中的内容以键值对形式存储,如果有冲突,会直接覆盖,有以下三种存储方式
localStorage.setItem(key, value)
1
localStorage.setItem('a', 1);
localStorage.key = value
1
localStorage.a = 1;
localStorage['key'] = value
1
localStorage['a'] = 1;
值的获取
localStorage.getItem(key)
1
localStorage.getItem('a') // => '1'
localStorage[key]
1
localStorage['a'] // => '1'
localStorage.key
1
localStorage.a // => '1'
删除值
* localStorage.removeItem(key)
,表示清除单项key
的值
1 | localStorage.removeItem('a') |
* localStorage.clear()
,表示清除localStorage
存储的所有数据
JSON存储
当需要存储的数据很多时,可以将数据存储到数组中并转换成JSON格式的数据。
SON.stringify(data)
将对象转换成JSON格式的数据串JSON.parse(data)
将数据解析成对象并返回解析后的对象
sessionStorage
localStorage
与sessionStorage
的唯一一点区别就是localStorage
属于永久性存储,而sessionStorage
属于当会话结束的时候,sessionStorage
中的键值对会被清空
localStorage的实现
1 | Object.defineProperty(window, "localStorage", new (function () { |