浏览器存储
随着 Web 应用程序的不断发展,产生了能够直接在客户端存储用户信息能力的要求。想法是很合乎逻辑,属于某个特定用户的信息(登录信息、偏好设置及其他数据)应该存储在该用户的机器上。本地存储的第一个解决方案是网景公司创造的 Cookie 。今天,Cookie 只是客户端存储数据的其中一种选项,Cookie 的性质和它的局限性使它并不能作为存储大量信息的理想手段,所以又出现了其他方法:Storage、sessionStorage、globalStorage(过时)、localStorage、IndexedDB。
Cookie
- Cookie 是 HTTP 协议中的内容
- 服务器通过 Set-Cookie 头给客户端一串字符串,
- 客户端每次访问相同域名的网页时,必须带上这段字符串
- 服务器读取 Cookie 就知道登录用户的信息(不要存重要信息)
- 客户端要在一段时间内保存这个 Cookie
- Cookie 默认在用户关闭页面后就失效,服务端可以任意设置 Cookie 的过期时间(expires)
- 大小大概在 4kb 以内
- Cookie 遵守同源策略,不过跟 AJAX 的同源策略稍微有些不同,服务端可以对 Cookie 的路径做限制
- Cookie 存在 Windows C 盘的一个文件里
- 一般用来记录不重要的用户信息,或者存储 SessionID,用于跟踪用户
- Cookie 内容太多会影响请求性能,因此尽可能少在 Cookie 中存储信息
- Cookie 的问题:用户可以随意篡改 Cookie
Session
- Session 依赖于 Cookie
- 将 SessionID(随机数)通过 Cookie 发给客户端
- 客户端访问服务器时,服务器读取 SessionID
- 服务器有一块内存(哈希表)保存了所有 session
- 通过 SessionID 我们可以得到对应用户的隐私信息,如 id、email
- 这块内存(哈希表)就是服务器上的所有 session
LocalStorage
- LocalStorage 跟 HTTP 无关
- HTTP 不会带上 LocalStorage 的值
- 只有相同域名的页面才能互相读取 LocalStorage(没有同源那么严格)
- 每个域名 localStorage 最大存储量为 5Mb 左右(每个浏览器不一样)
- 常用场景:记录有没有提示过用户(没有用的信息,不能记录密码)
- LocalStorage 永久有效,除非用户清理缓存
SessionStorge(会话存储)
- 基本和 LocalStorage 一样,区别就是保存时间不同
- SessionStorage 在用户关闭页面(会话结束)后就失效
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章