# 浏览器

# cookiesessionStoragelocalStorage的区别

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
访问权限 任意窗口 任意窗口 当前页面窗口
  • 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 渲染完才执行
上次更新: 11/8/2024, 10:19:43 AM