Cookie、LocalStorage 和 SessionStorage 的全面解析

1,081 阅读5分钟

存储方式.png

在网络应用的世界里,HTTP 作为一种无状态协议,虽具备高效传输的优势,但在实际的 Web 应用中,却常需要保持一定的状态信息。基于此需求,cookie、(HTML5 中的)localStorage 和 sessionStorage 应运而生,它们在客户端数据存储与管理方面发挥着重要作用。

Cookie:穿梭于客户端与服务器的信使

  • 生成与存储:Cookie 由服务端生成并发送给浏览器,存储在本地。

  • 数据传递特性:每次浏览器向服务器发送请求时,都会自动携带相应的 Cookie 数据。

Cookie 的优缺点

  • 优点:

    • 能在浏览器和服务器间灵活传递数据,适用于追踪用户信息。
    • 可通过手动设置过期时间,灵活调节数据存储时长。
  • 缺点:

    • 每次请求都携带 Cookie 数据,不仅增加了网络流量,还会对性能产生一定影响。
    • Cookie 在 HTTP 中以明文形式传递,安全性欠佳,容易遭受篡改。
    • 其存储容量相对较小,一般仅为 4KB

应用场景示例:

  • 网站可利用 Cookie 识别用户登录状态。
  • 记住用户在购物车中添加的商品。
  • 收集用户兴趣和偏好信息,用于定制个性化广告。

(在客户端和服务器之间频繁传递少量数据的场景、身份验证、会话管理)

LocalStorage:客户端的长期记忆库

  • 存储特点:LocalStorage 和 SessionStorage 均是在浏览器端进行数据存储。LocalStorage 的显著特点是存储容量较大,通常可达 5MB,且存储的数据会永久存在于浏览器中,无需担忧数据丢失问题。
  • 访问方式:通过 JavaScript,开发者能方便地对 LocalStorage 进行访问,其操作简单,API 十分友好。

LocalStorage 的优缺点

  • 优点:

    • 存储容量较大一般为5M

    • 存储的数据可以在客户端浏览器中永久保存不必要担心丢失

    • 操作方便,API友好可通过JavaScript直接访问

  • 缺点:

    • 由于同源机制的限制,一个网站只能访问自身域名下的 LocalStorage,这对于跨域资源共享以及单点登录等应用场景不太友好。
    • 不支持不同浏览器之间共享数据。

LocalStorage 的使用场景

  • 常用于存储用户个人偏好,比如主题选择、隐私设置等。

  • 以电商平台为例,商品详情页包含丰富信息,当用户查看商品详情时,页面可将这些数据缓存到 LocalStorage,以便后续快速访问,提升用户体验。

SessionStorage:会话期间的临时守护者

  • 存储时效与独立性:SessionStorage 的数据同样存储在客户端,与 LocalStorage 不同的是,它仅在关闭浏览器窗口前有效。在页面刷新时,SessionStorage 中的数据依然会保留,且每个标签和窗口之间的数据相互独立。

SessionStorage 的优缺点

  • 优点:

    • 数据它主要存储在客户端

    • 页面刷新,仍然会保留原来会话的数据

    • 每个标签和窗口之间的数据独立

  • 缺点:

    • 不适合长期存储。
    • 数据不共享,每个 Tab 页都拥有独立的数据。

image.png

SessionStorage 的使用场景

对于多步骤表单流程,SessionStorage 是个不错的选择。在用户点击上 / 下一步修改刚刚填写的数据时,SessionStorage 可确保数据在当前会话期间的完整性与准确性。

三者的共同点

  • 存储位置:Cookie、LocalStorage 和 SessionStorage 都保存在浏览器端。
  • 跨域限制:都受同源策略的影响,不支持跨域操作。

在实际应用中:

  • 在客户端和服务器之间共享数据 + 长期存储的话 ---> cookie

  • 只在客户端长期存储 + 无需与服务器交互 ---> storage

  • 只在客户端 + 会话期间暂存 ---> session storage 深入理解并合理运用这三种存储方式,能为 Web 应用的开发带来极大便利,提升用户体验。

特性CookieLocalStorageSessionStorage
存储位置浏览器端浏览器端浏览器端
跨域限制受同源策略限制,不支持跨域受同源策略限制,不支持跨域受同源策略限制,不支持跨域
数据传递可在客户端与服务器间来回传递仅在客户端存储,不与服务器交互仅在客户端存储,不与服务器交互
有效期可手动设置过期时间永久有效会话期间有效,关闭浏览器窗口即失效
存储容量一般为 4KB一般为 5MB一般为 5MB
优点适用于追踪用户信息,可灵活设置过期时间存储容量大,数据永久保存,操作方便页面刷新数据保留,每个标签和窗口数据独立
缺点每次请求携带数据增加流量和性能损耗,明文传递不安全,存储容量小受同源机制限制,不支持不同浏览器共享数据不适合长期存储,数据不共享
使用场景身份验证、会话管理、少量数据在客户端和服务器间频繁传递,如用户登录状态、购物车部分信息存储用户个人偏好,如主题选择、隐私设置;电商商品详情页数据缓存多步骤表单流程,保证会话内数据暂存的完整性

如果您觉得这篇文章对您有帮助,欢迎点赞和收藏,大家的支持是我继续创作优质内容的动力🌹🌹🌹也希望您能在😉😉😉我的主页 😉😉😉找到更多对您有帮助的内容。

  • 致敬每一位赶路人