当前位置: 首页 > news >正文

Cookie 和本地存储,浏览器缓存

1. Cookie

  • 作用:用于在客户端和服务器之间传递少量数据,通常用于会话管理(如用户登录状态、用户偏好设置等)。
  • 存储大小:每个Cookie的大小限制通常为4KB左右。
  • 有效期:可以设置过期时间,过期后自动删除;如果未设置过期时间,Cookie会在浏览器会话结束后删除(称为会话Cookie)。
  • 访问范围:可以通过 HttpOnly 属性将Cookie设为仅服务器端可访问,防止JavaScript访问;通过 Secure 属性确保Cookie仅在HTTPS下传输。
  • 发送规则:每次请求都会自动将Cookie随请求头发送到服务器,因此适合存储与服务器通信相关的数据。
  • 使用场景
    • 记住用户登录状态。
    • 存储用户偏好设置或其他小型会话数据。

2. 本地存储(Local Storage)

  • 作用:用于在客户端持久存储大量数据。不同于Cookie,数据不会自动发送到服务器。
  • 存储大小:一般为5-10MB。
  • 有效期:除非手动清除,否则数据会永久存储在客户端。
  • 访问范围:只能在同一域名下的所有页面访问(同源策略)。
  • 特点:操作简单,通过 localStorage API直接进行存储和读取。
  • 使用场景
    • 存储用户设置、主题选择等需要在多个页面或会话之间共享的数据。
    • 缓存静态资源或较大的数据集合。

3. 浏览器缓存(Browser Cache)

  • 作用:用于缓存从服务器加载的静态资源(如HTML、CSS、JavaScript、图片等),以减少页面加载时间,提高性能。
  • 工作原理:通过HTTP头信息控制缓存行为,例如 Cache-ControlExpiresETag 等。
  • 缓存策略
    • 强缓存:根据 Cache-ControlExpires 头来判断,浏览器在缓存期内直接使用缓存的副本,而不向服务器发送请求。
    • 协商缓存:浏览器向服务器发送请求,通过 ETagLast-Modified 头来判断缓存资源是否发生变化。如果没有变化,服务器返回304状态码,并指示浏览器继续使用缓存的副本。
  • 使用场景
    • 静态资源的缓存,如CSS、JS文件,减少服务器负担。
    • 页面数据的临时缓存,减少重复加载的时间。

总结

  • Cookie 适合存储少量、需要与服务器交互的会话数据。
  • 本地存储 适合持久化存储较大数据,且仅在客户端使用,不与服务器频繁交互。
  • 浏览器缓存 用于提高资源加载效率,通过缓存静态资源减少网络请求

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 三级_网络技术_18_路由器的配置及使用
  • HCIP-HarmonyOS Application Developer 习题(三)
  • Linux中ES的安装
  • 【信创】双系统下删除Windows只保留麒麟系统
  • Amazon VPC基础指南
  • Docker——常用命令
  • c语言第18天笔记
  • 第11章 第3节 软件测试的基本概念(软件评测师)
  • 水星Mercury X1轮式人形机器人结合openc算法&STag标记码视觉系统实现精确抓取!
  • 轻松学 c++之类与对象下篇 + 模板
  • 流程图绘作方法
  • 【数学建模备赛】Ep02:TOPSIS模型(优劣解距离法)
  • 仿Muduo库实现高并发服务器——事件监控Poller模块
  • 【日常工作与提升式学习分享】
  • 【康复学习--LeetCode每日一题】3152. 特殊数组 II
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • JS 中的深拷贝与浅拷贝
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • docker-consul
  • LeetCode29.两数相除 JavaScript
  • oldjun 检测网站的经验
  • Python打包系统简单入门
  • vue2.0项目引入element-ui
  • 阿里云购买磁盘后挂载
  • 第2章 网络文档
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 给新手的新浪微博 SDK 集成教程【一】
  • 山寨一个 Promise
  • 写给高年级小学生看的《Bash 指南》
  • 用简单代码看卷积组块发展
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • # C++之functional库用法整理
  • #Z2294. 打印树的直径
  • (04)odoo视图操作
  • (12)Linux 常见的三种进程状态
  • (HAL库版)freeRTOS移植STMF103
  • (libusb) usb口自动刷新
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (笔记)M1使用hombrew安装qemu
  • (六)Flink 窗口计算
  • (六)Hibernate的二级缓存
  • (南京观海微电子)——COF介绍
  • (七)Knockout 创建自定义绑定
  • (区间dp) (经典例题) 石子合并
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四)Android布局类型(线性布局LinearLayout)
  • (学习日记)2024.01.09
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)scrum常见工具列表
  • (转载)CentOS查看系统信息|CentOS查看命令
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .apk 成为历史!
  • .bat批处理(三):变量声明、设置、拼接、截取