• 浏览器存储


    我们经常需要对业务中的一些数据进行存储,通常可以分为 短暂性存储 和 持久性储存。

    • 短暂性的时候,我们只需要将数据存在内存中,只在运行时可用
    • 持久性存储,可以分为 浏览器端 与 服务器端
      • 浏览器:
        • cookie: 通常用于存储用户身份,登录状态等
          • http 中自动携带, 体积上限为 4K, 可自行设置过期时间
        • localStorage / sessionStorage: 长久储存/窗口关闭删除, 体积限制为 4~5M
        • indexDB
      • 服务器:
        • 分布式缓存 redis
        • 数据库

    cookie和localSrorage、session、indexDB 的区别

    特性cookielocalStoragesessionStorageindexDB
    数据生命周期一般由服务器生成,可以设置过期时间除非被清理,否则一直存在页面关闭就清理除非被清理,否则一直存在
    数据存储大小4K5M5M无限
    与服务端通信每次都会携带在 header 中,对于请求性能影响不参与不参与不参与

    从上表可以看到,cookie 已经不建议用于存储。如果没有大量数据存储需求的话,可以使用 localStoragesessionStorage 。对于不怎么改变的数据尽量使用 localStorage 存储,否则可以用 sessionStorage 存储。

    对于 cookie,我们还需要注意安全性

    属性作用
    value如果用于保存用户登录态,应该将该值加密,不能使用明文的用户标识
    http-only不能通过 JS访问 Cookie,减少 XSS攻击
    secure只能在协议为 HTTPS 的请求中携带
    same-site规定浏览器不能在跨域请求中携带 Cookie,减少 CSRF 攻击

    • Name,即该 Cookie 的名称。Cookie 一旦创建,名称便不可更改。
    • Value,即该 Cookie 的值。如果值为 Unicode 字符,需要为字符编码。如果值为二进制数据,则需要使用 BASE64 编码。
    • Max Age,即该 Cookie 失效的时间,单位秒,也常和 Expires 一起使用,通过它可以计算出其有效时间。Max Age如果为正数,则该 CookieMax Age 秒之后失效。如果为负数,则关闭浏览器时 Cookie 即失效,浏览器也不会以任何形式保存该 Cookie
    • Path,即该 Cookie 的使用路径。如果设置为 /path/,则只有路径为 /path/ 的页面可以访问该 Cookie。如果设置为 /,则本域名下的所有页面都可以访问该 Cookie
    • Domain,即可以访问该 Cookie 的域名。例如如果设置为 .zhihu.com,则所有以 zhihu.com,结尾的域名都可以访问该 CookieSize 字段,即此 Cookie 的大小。
    • Http 字段,即 Cookiehttponly 属性。若此属性为 true,则只有在 HTTP Headers 中会带有此 Cookie 的信息,而不能通过 document.cookie 来访问此 Cookie。
    • Secure,即该 Cookie 是否仅被使用安全协议传输。安全协议。安全协议有 HTTPS、SSL 等,在网络上传输数据之前先将数据加密。默认为 false
  • 相关阅读:
    [持续更新]计算机经典面试题基础篇Day2
    超图s3m服务加载时添加token
    2. 对 HTML 语义化的理解?
    MySQL技术内幕-InnoDB存储引擎
    PostgreSQL 15新版本特性解读(含直播问答、PPT资料汇总)
    安全行业基础知识学习
    GoLang接口
    带有无偏移国内源GeoQ的folium
    计算机毕业设计选什么题目好?springboot 学习笔记系统
    【沁恒蓝牙mesh】CH58x USB功能开发记录(0)
  • 原文地址:https://blog.csdn.net/php_martin/article/details/125869461