news 2026/4/4 9:23:09

http缓存

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
http缓存

一、HTTP 缓存的分类

HTTP 缓存主要分为两类:

  1. 强缓存(Strong Cache)
    浏览器在命中强缓存时,不会向服务器发送请求,直接使用本地缓存资源。
    控制字段主要有:

    • Cache-Control(HTTP/1.1):优先级更高,常用指令包括:
      • max-age=3600:资源在 3600 秒内有效
      • no-cache:跳过强缓存,但会进行协商缓存
      • no-store:禁止缓存
      • public/private:是否可被共享缓存(如 CDN)存储
    • Expires(HTTP/1.0):指定一个绝对过期时间(如Expires: Wed, 21 Oct 2025 07:28:00 GMT),但受客户端时间影响,已被Cache-Control取代。
  2. 协商缓存(Revalidation / Weak Cache)
    当强缓存失效后,浏览器会携带缓存标识向服务器验证资源是否更新。若未更新,服务器返回304 Not Modified,浏览器继续使用本地缓存;否则返回新资源(200)。
    主要通过以下头部实现:

    • Last-Modified+If-Modified-Since:基于文件最后修改时间
    • ETag+If-None-Match:基于资源内容生成的唯一标识(更精确,优先级高于 Last-Modified)

注意Cache-Control: no-cache并不是“不缓存”,而是跳过强缓存,强制走协商缓存;而no-store才是完全禁止缓存。


二、缓存决策流程(简化版)

  1. 浏览器发起请求;
  2. 检查是否存在强缓存(Cache-ControlExpires):
    • 若未过期 → 直接使用缓存(状态码 200 from disk/memory cache);
    • 若已过期或无强缓存 → 进入协商缓存;
  3. 发送带If-None-MatchIf-Modified-Since的请求到服务器;
  4. 服务器比对后:
    • 资源未变 → 返回 304,浏览器用缓存;
    • 资源已变 → 返回 200 + 新资源。

三、实际开发中的最佳实践

  • 静态资源(JS/CSS/图片等)
    使用Cache-Control: max-age=31536000(一年),并配合文件名哈希(如 bundle.a1b2c3.js)实现“永久缓存 + 内容更新即换名”。

  • HTML 文件
    通常设为Cache-Control: no-cache,确保每次都能获取最新入口,避免因缓存导致新版本无法加载。

  • API 接口数据
    一般不缓存(no-store)或短时间协商缓存,防止数据陈旧。

  • CDN 场景
    注意Cache-Controlpublicprivate的区别,敏感数据应设为private,避免被中间代理缓存。


四、调试技巧

  • Chrome DevTools → Network 面板:
    • Size列显示(memory cache)/(disk cache)表示命中强缓存;
    • 状态码304表示协商缓存命中;
    • 勾选Disable cache可临时禁用缓存(仅开发者工具打开时生效)。

总结

HTTP 缓存机制是性能优化的基石。合理配置Cache-ControlETag等头部,结合构建工具的文件指纹策略,可以在保证内容实时性的同时最大化缓存收益。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 0:49:58

OOM错误应对策略:PyTorch-CUDA-v2.7显存优化技巧

OOM错误应对策略:PyTorch-CUDA-v2.7显存优化技巧 在深度学习项目中,你是否曾经历过训练到一半突然弹出 CUDA out of memory 的红色警告?重启、减小 batch size、甚至怀疑硬件故障……这些“常规操作”背后,其实是对显存管理机制理…

作者头像 李华
网站建设 2026/4/1 1:07:55

【2026年精选毕业设计:基于本地大模型的个人数字健康管家系统(含论文+源码+PPT+开题报告+任务书+答辩讲解)】

2026年精选毕业设计:基于本地大模型的个人数字健康管家系统(含论文源码PPT开题报告任务书答辩讲解)告别云端依赖!这个毕设项目让AI健康助手真正“住”进你的电脑——全程离线、隐私无忧、还能语音对话!全套资料开源&am…

作者头像 李华
网站建设 2026/4/1 23:04:18

创业公司技术选型建议:PyTorch-CUDA-v2.7镜像提升研发效率

创业公司技术选型建议:PyTorch-CUDA-v2.7镜像提升研发效率 在AI创业浪潮中,一个现实问题反复浮现:新入职的算法工程师第一天上班,花了整整一天配置环境——CUDA驱动版本不匹配、cuDNN安装失败、PyTorch和Python版本冲突……最终模…

作者头像 李华
网站建设 2026/4/3 11:25:56

多GPU并行训练入门:PyTorch-CUDA-v2.7镜像支持多卡配置

多GPU并行训练入门:PyTorch-CUDA-v2.7镜像支持多卡配置 在深度学习模型日益庞大的今天,一个130亿参数的语言模型用单张RTX 4090跑完一轮训练可能需要两周时间——这显然无法满足快速迭代的研发节奏。更现实的情况是,研究者刚调好环境&#xf…

作者头像 李华
网站建设 2026/3/27 13:45:02

Anaconda下载慢?直接使用预装环境的PyTorch-CUDA-v2.7镜像

PyTorch-CUDA-v2.7镜像:告别Anaconda下载慢,开箱即用的深度学习环境 在深度学习项目启动的前几个小时,你是否也曾经历过这样的场景:满怀热情地打开电脑,准备复现一篇最新论文,结果卡在了 conda install py…

作者头像 李华
网站建设 2026/4/3 9:33:08

YOLOv11 mAP评估脚本:在PyTorch中计算检测精度

YOLOv11 mAP评估脚本:在PyTorch中计算检测精度 在目标检测领域,模型一旦训练完成,真正的考验才刚刚开始——我们如何客观地衡量它的表现?尤其是在YOLOv11这类追求速度与精度平衡的新一代架构下,一个可靠、高效的评估流…

作者头像 李华