前端存储的五种方案

273 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第29天,点击查看活动详情

1、cookies

Cookie 是存储在您计算机上的小型文本文件中的数据。当 Web 服务器将网页发送到浏览器时,连接会关闭,服务器会忘记有关用户的所有信息。发明 Cookie 是为了解决“如何记住用户信息”的问题:

  • 当用户访问网页时,他/她的姓名可以存储在 cookie 中。
  • 下次用户访问该页面时,cookie 会“记住”他/她的名字。

Cookie 保存在键-值对中,例如:

username = li

cookies是HTML5标准前本地储存的主要⽅式,优点是兼容性好,请求头⾃带cookie⽅便,缺点是⼤⼩只有4k, ⾃动请求头加⼊cookie浪费流量,每个domain限制20个cookie,使⽤起来麻烦需要⾃⾏封装。

2、localstorage

localStorage是一种属性,允许 JavaScript 站点和应用程序将键值对保存在 Web 浏览器中,没有过期日期。这意味着即使在浏览器窗口关闭后,存储在浏览器中的数据也会保留。

HTML5加⼊的以键值对(Key-Value)为标准的⽅式,优点是操作⽅便,永久性储存(除⾮⼿动删除),⼤⼩为5M,兼容IE8+。

要localStorage在Web 应用程序中使用,有五种方法可供选择:

  1. setItem(): 添加键和值到localStorage
  2. getItem(): 获取localStorage
  3. removeItem(): 按键删除一个项目localStorage
  4. clear(): 全部清除localStorage
  5. key(): 传递一个数字来检索一个密钥localStorage

使用localStorage起来很简单,也很容易误用。以下是限制:

  • 不要将敏感的用户信息存储在localStorage。
  • 它不能替代基于服务器的数据库,因为信息仅存储在浏览器中。
  • localStorage在所有主要浏览器中限制为 5MB。
  • localStorage非常不安全,因为它没有任何形式的数据保护,并且可以通过您网页上的任何代码访问。
  • localStorage是同步的,这意味着调用的每个操作只会一个接一个地执行。

3、sessionstorage

sessionStorage仅在浏览器打开时(包括页面重新加载或恢复时)维护一个存储区域,而localStorage在浏览器关闭后继续存储数据。换句话说,sessionStorage当页面关闭时,存储的数据会被清除,而存储的数据localStorage不会过期。

sessionStorage与cookie、 localStorage不同,它不能在所有同源窗⼝中共享,是会话级别的储存⽅式。

4、Web SQL

2010年被W3C废弃的本地数据库数据存储⽅案,但是主流浏览器(⽕狐除外)都已经有了相关的实现,web sql类似于SQLite,是真正意义上的关系型数据库,⽤sql进⾏操作,当我们⽤JavaScript时要进⾏转换, 较为繁琐。

5、IndexedDB

是被正式纳⼊HTML5标准的数据库储存⽅案,它是NoSQL数据库,⽤键值对进⾏储存,可以进⾏快速读取操作,⾮常适合web场景,同时⽤JavaScript进⾏操作会⾮常⽅便。

什么情况下适合使用 IndexedDB

  • 存储大量数据的应用程序
  • 不需要持久 Internet 连接仍可工作的应用程序

IndexedDB 可以在浏览器中永久存储数据。无论网络状态如何,都可以查询数据。