关于前端:jsliang-求职系列-18-本地存储

21次阅读

共计 2152 个字符,预计需要花费 6 分钟才能阅读完成。

一 目录

不折腾的前端,和咸鱼有什么区别

目录
一 目录
二 前言
三 Cookie
四 Web Storage
 4.1 Local Storage
 4.2 Session Storage
五 IndexedDB
六 token
七 参考文献

二 前言

返回目录

浏览器存储是面试中较为根底的知识点,面试中发问频率中等偏下,往往 5/6 家会有 1 家出一道缓存题。

浏览器的本地存储次要分为 CookieWeb StorageIndexedDB

Web Storage 分为 Local StorageSession Storage

所以本篇介绍内容为 4 点:

  1. Cookie
  2. Local Storage
  3. Session Storage
  4. IndexedDB

啪,上手很快呀!

三 Cookie

返回目录

Cookie 最开始被设计进去其实并不是来做本地存储的,而是为了补救 HTTP 在状态治理上的有余。

HTTP 是无状态的,即它不会记住用户的操作,这让咱们在记住用户状态等场景被限度,所以有了 Cookie

Cookie 实质上就是浏览器外面存储的一个很小的文本文件,外部以键值对的形式来存储。

向同一个域名下发送申请,都会携带雷同的 Cookie,服务器拿到 Cookie 进行解析,便能拿到客户端的状态。

缺点:

  1. 容量缺点 。体积上线 4kb,只能存储大量信息。
  2. 性能缺点 Cookie 申请每次都会携带上残缺的 Cookie,随着申请数增多,造成性能节约。
  3. 平安缺点 。以纯文本的模式在浏览器和服务器中传递,容易被非法截获和篡改。

四 Web Storage

返回目录

Web Storage 分为 Local StorageSession Storage,上面咱们一一理解学习。

4.1 Local Storage

返回目录

Local Storge 绝对 Cookie 而言,它也是针对同一个域名。

同一个域名下,会存储雷同的一段 Local Storage

相比 Cookie 劣势:

  1. 容量 。体积上线 5M,大于 Cookie4kb
  2. 只存在客户端 。不参加和服务端的通信,防止 Cookie 的性能缺点和平安缺点。
  3. 接口封装 。有 setItemgetItem 两个 API 接口。

设置

localStorage.setItem("name", "jsliang"); 

let obj = {name: "jsliang", age: 18};
localStorage.setItem("info", JSON.stringify(obj));

取值

let name = localStorage.getItem("name");
let info = JSON.parse(localStorage.getItem("info"));

利用场景

  • Base64 形式存储官网 Logo 等图片。

4.2 Session Storage

返回目录

基本上和 Local Stoarge 统一。

相比拟上的不同:

  • 会话级别的存储。不同于 Local Storage 的继续化存储,Session Storage 当页面敞开的时候就不复存在了。

利用场景

  1. 对表单信息做保护。用户刷新页面不失落。
  2. 存储本次浏览记录。看过的页面不怕找不到。

五 IndexedDB

返回目录

IndexedDB 是运行在浏览器中的 非关系型数据库

因为实质上是数据库,所以一般来说容量是没有上线的。

然而目前还没有尝试一番,所以这里就不颤抖了。

六 token

返回目录

最初咱们补充一下 token 常识。

家喻户晓,HTTP 是无状态协定,即它对于交互性场景没有记忆能力。

然而,如果碰到某些场景,就有点无奈了:

  1. 输出账号密码进行登录
  2. 将商品退出购物车
  3. 点击领取,发现用户要从新登录

这种状况是不是就大刀阔斧了?

不,咱们还能够通过 token 来维持用户的登录态:

用户 id + 过期工夫 + SecretKey

"用户 id" + "过期工夫" + SHA1("用户 id" + "用户口令" + "过期工夫" + "SecretKey")

这样,当浏览器发送申请给服务器,token 会通过 cookie 等模式将下面实例内容传输给服务器。

服务器拿到数据后,依据用户 id 查找用户口令,并进一步计算是否已过期,从而判断用户是否须要从新登录。

须要从新登录则跳转到登录页面,不须要从新登录则进行领取流程。

七 参考文献

返回目录

  • [x] cookie、Session、Token、sessionStorage、localStorage 简介【浏览倡议:5min】
  • [x] session,cookie,sessionStorage,localStorage,token 的区别?【浏览倡议:5min】
  • [x] 什么是 Http 无状态?Session、Cookie、Token 三者之间的区别【浏览倡议:5min】
  • [x] Session 是怎么实现的?存储在哪里?【浏览倡议:5min】
  • [x] 用户登录,前后端如何交互判断是否登录超时!【浏览倡议:5min】
  • [x] 前后端拆散模式下,如何跟踪用户状态?【浏览倡议:5min】

jsliang 的文档库由 梁峻荣 采纳 常识共享 署名 - 非商业性应用 - 雷同形式共享 4.0 国内 许可协定 进行许可。<br/> 基于 https://github.com/LiangJunrong/document-library 上的作品创作。<br/> 本许可协定受权之外的应用权限能够从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处取得。

正文完
 0