cookie、session、sessionStorage、localStorage 之间的区别及应用场景

在前端平常开发中 cookiewebStorage 是咱们经常使用的浏览器缓存方式。但同时提及 cookiesessionsessionStoragelocalStorage 是否是有些傻傻分不清楚了?本文梳理归纳了它们的区别及应用场景,相信对你的面试和实际应用都有必定帮助。html

cookie

  • 由服务端生成,保存在客户端(因为先后端有交互,因此安全性差,且浪费带宽)
  • 存储大小有限(最大 4kb )
  • 存储内容只接受 String 类型
  • 保存位置:前端

    • 若未设置过时时间,则保存在 内存 中,浏览器关闭后销毁
    • 若设置了过时时间,则保存在 系统硬盘 中,直到过时时间结束后才消失(即便关闭浏览器)
  • 数据操做不方便,原生接口不友好,须要本身封装
  • 应用场景html5

    • 判断用户是否登录过网站,以便下次登陆时可以实现自动登陆(或者记住密码)
    • 保存登陆时间、浏览次数等信息
设置了过时时间的cookie存在了哪里呢?
Mac: /Users/用户名/Library/caches/Google/Chrome/Default/cache
Windows: C:\Users\用户名\AppData\LocalMicrosoft\Windows\Temporary Internet Files

session

  • 是后端关心的内容,依赖于 cookie(sessionID 保存在cookie中)
  • 保存在服务端
  • 存储大小无限制
  • 支持任何类型的存储内容
  • 保存位置:服务器内存,若访问较多会影响服务器性能

webStorage

webStorage 是 html5 提供的本地存储方案,包括两种方式:sessionStoragelocalStorage。相比 cookie 这种传统的客户端存储方式,webStorage 有许多优势:web

  • 保存在客户端,不与服务器通讯,所以比 cookie 更安全、速度更快
  • 存储空间有限,但比 cookie 大(5MB)
  • 仅支持 String 类型的存储内容(和 cookie 同样)
  • html5 提供了原生接口,数据操做比 cookie 方便面试

    • setItem(key, value) 保存数据,以键值对的方式储存信息。
    • getItem(key) 获取数据,将键值传入,便可获取到对应的value值。
    • removeItem(key) 删除单个数据,根据键值移除对应的信息。
    • clear() 删除全部的数据
    • key(index) 获取某个索引的key
localStorage
  • 持久化的本地存储,浏览器关闭从新打开数据依然存在(除非手动删除数据)。
  • 应用场景:长期登陆、判断用户是否已登陆,适合长期保存在本地的数据。
存储文件夹:
Mac: /Users/用户名/Library/Application Support/Google/Chrome/Default/Local Stroage
Windows: C:\Users用户名\AppData\Local\Google\Chrome\User Data\Profile\Local Storage
sessionStorage
  • 浏览器窗口关闭后数据被销毁。
  • 应用场景:敏感帐号一次性登陆。

总结

综上所述,咱们能够知道,cookiewebStorage( localStorage、sessionStorage )是前端工程师关心的内容,session 是后端关心的内容。
cookie 存储量小、安全性差、数据操做接口不友好,而 webStorage 存储量较大、安全性较高、数据接口友好。
若要持久的存储方式,推荐使用 localStorage
若要一次性会话的存储,推荐使用 sessionStorage后端

看完有收获吗?喜欢请点赞支持哦~浏览器

相关文章
相关标签/搜索