存储篇 :本地存储——从 Cookie 到 Web Storage、IndexedDB

281 阅读2分钟

Cookie 以键值对的形式存在

Cookie 不够大

最大只能有 4KB。当 Cookie 超过 4KB 时,它将面临被裁切的命运。这样看来,Cookie 只能用来存取少量的信息。

过量的 Cookie 会带来巨大的性能浪费‘

Web Storage

特性 
    1:存储容量大: Web Storage 根据浏览器的不同,存储容量可以达到 5-10M 之间。
    2:仅位于浏览器端,不与服务端发生通信

Local Storage 与 Session Storage 的区别
两者的区别在于生命周期与作用域的不同。

生命周期:Local Storage 是持久化的本地存储,存储在其中的数据是永远不会过期的,使其消失的唯一办法是手动删除;而 Session Storage 是临时性的本地存储,它是会话级别的存储,当会话结束(页面被关闭)时,存储内容也随之被释放。

作用域:Local Storage、Session Storage 和 Cookie 都遵循同源策略。但 Session Storage 特别的一点在于,即便是相同域名下的两个页面,只要它们不在同一个浏览器窗口中打开,那么它们的 Session Storage 内容便无法共享。

用法

存储数据:setItem()
    localStorage.setItem('user_name', 'xiuyan')
读取数据: getItem()
    localStorage.getItem('user_name')
删除某一键名对应的数据: removeItem()
    localStorage.removeItem('user_name')
清空数据记录:clear()
   localStorage.clear()

IndexedDB

是一个运行在浏览器上的非关系型数据库
IndexedDB 是没有存储上限的
它不仅可以存储字符串,还可以存储二进制数据。

应用场景

在 IndexedDB 中,我们可以创建多个数据库,一个数据库中创建多张表,一张表中存储多条数据——这足以 hold 住复杂的结构性数据。IndexedDB 可以看做是 LocalStorage 的一个升级,当数据的复杂度和规模上升到了 LocalStorage 无法解决的程度,我们毫无疑问可以请出 IndexedDB 来帮忙