# 前端持久化

1. 早期的前端存储主要是 cookie，后来经过前端工程师不屑的追求以及开发，有了后来的 localStorage 和 sessionStorage 技术。
2. 再到后来技术演进有了 indexDB 技术，也就是一个事务型的 key-value 形式的数据库
3. 说说 cookie 有了，为什么还要有 localStorage，因为 cookie 虽然可以存储一些数据，但是大小非常有限，也就是 4k。并且 cookie 的本质工作是用来追踪浏览器用户的信息，因为 HTTP 是无状态协议，即服务器不知道用户上一次做了些什么，这严重阻碍了 Web 应用程序的时下。也就是通过 HTTP 连接无法知道用户干了些什么，比如说当用户在浏览一个商城的时候无法记录他购买了什么商品，介于此我们可以使用 cookie 技术用来绕开 HTTP 无状态的的特点，服务器可以设置或读取 cookie 中包含的信息，借此维护用户和服务器会话中的状态。

cookie 的另一个日常应用场景就是当用户勾选了某个网站的“下次自动登录”，那么在下次访问这个网站的时候，用户发现没有输入账号和密码就已经是登录状态。这是因为前一次登录的时候服务器发送了包含登录凭证（用户名和密，以及包含登录时长 的 token 信息）的 cookie 到用户的硬盘上，第二次登录时发现登录时长还有效，那么则自动登录
4. 对于存储数据这个功能来说，cookie 的缺陷
    * cookie 会被附加到每个 HTTP 请求的头部去，所以如果用来存储数据，那么每次请求就加大了请求数据量
    * cookie 在 HTTP 请求中是明文传递的，所以存在安全性问题（除非 HTTPS）
    * cookie 只有4k的存储空间
    
5.cookie 的另一种不好的方面表现在：当用户去访问某个网站的时候（通过搜索引擎查到的），这个网站包含一种叫做网页臭虫的图片，通常是1像素大小（以便于隐藏），它们的作用是将所有访问过此页面的计算机写入 cookie，而后，电子商务网站读取这些 cookie 信息，并寻找写入这些 cookie 的网站，随机发送包含针对这个网站的相关产品广告的垃圾邮件给这些用户












