# 浏览器
# Cookie
# cookie
、sessionStorage
和localStorage
的区别
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies (opens new window)
cookie | localStorage | sessionStorage | |
---|---|---|---|
由谁初始化 | 客户端或服务器,服务器可以使用Set-Cookie 请求头。 | 客户端 | 客户端 |
过期时间 | 手动设置 | 永不过期 | 当前页面关闭时 |
在当前浏览器会话(browser sessions)中是否保持不变 | 取决于是否设置了过期时间 | 是 | 否 |
是否随着每个 HTTP 请求发送给服务器 | 是,Cookies 会通过Cookie 请求头,自动发送给服务器 | 否 | 否 |
容量(每个域名) | 4kb | 5MB | 5MB |
访问权限 | 任意窗口 | 任意窗口 | 当前页面窗口 |
# token 和 cookie 有什么区别
cookie 是 http 规范, 而 token 是自定义传递
cookie 会默认被浏览器存储,token 需要自己存储
token 没有跨域限制 用于 jwt
cookie
- 服务端可以向客户端发送 cookie set-cookie
- 默认 跨域不共享 传递 cookie
- h5 本地存储
- 禁止第三方 cookie sameSite
- cookie 用于登录验证,存储用户标识
- session 在服务端,存储用户的详细信息,和 cookie 信息一一对应
- cookie session 登录验证方案
# Session 和 JWT
存储在服务端,
默认有跨域限制
多进程 多服务器时 需要第三方缓存 redis
用户信息存储在客户端,无法快速封禁用户
服务端密钥被泄露,用户信息会丢失
严格保护用户信息的, session
# 如何实现 SSO 单点登录
- cookie
- 主域名相同
- 设置 cookie domain 共享 cookie
# 浏览器和 Nodejs 的事件循环有什么区别
- eventloop
- nodejs
- 也有宏任务和微任务,分不同的类型,有不同的优先级
- 宏任务
- timers
- I/0
- idls
- poll
- check setImmeditely
- 微任务
- process.nextTick 优先级最高
- 先同步再异步
- node 有宏任务和微任务的优先级
# 单线程和异步
- js 是单线程
- 浏览器中 js 的执行的 dom 渲染共用一个线程
# 异步
先执行同步任务,
- 宏任务和微任务
- 微任务 promise async await
- 微任务在下一轮 dom 渲染完成之前执行,宏任务在之后执行
# requestIdleCallback requestAnimationFrame
- animation 每次渲染都要执行 高优先级
- requestIdleCallback 空闲时才执行
- 宏任务 等待 dom 渲染完才执行