news 2026/8/29 7:08:48

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/8/28 14:29:39

本地无GPU也能调试?云端加载PyTorch-CUDA镜像进行推理

本地无GPU也能调试?云端加载PyTorch-CUDA镜像进行推理 在深度学习项目开发中,一个常见的尴尬场景是:你写好了模型代码、准备跑通推理流程,结果 torch.cuda.is_available() 返回了 False——本地没有 NVIDIA 显卡,连最基…

作者头像 李华
网站建设 2026/8/29 7:08:10

第四课Open3D点云数据处理:读写网格模型(mesh)与格式转换

1 mesh 加载函数 1.1 函数原型 1.2 参数说明 1.3代码展示 ​编辑 1.4 判断mesh文件是否读取成功 2 mesh 保存函数 2.1 函数原型 2.2 参数说明 2.3 代码示例 2.4 Open3D支持的mesh类型 3 mesh 格式转换 3.1 ply 转 obj 3.2 ply 转 stl 3.3 ply 转 off 3.4 ply 转…

作者头像 李华
网站建设 2026/8/29 7:08:00

第六课Open3D点云数据处理:点云、mesh可视化(Visualizer类)

1 Visualizer类 2 参数详解 2.1 常用参数 2.2 渲染参数 RenderOption 详解 3 点云可视化 3.1 最简单的点云可视化 3.2 可视化多个点云 3.3 可视化点云法线 3.4 其他参数 4 mesh可视化 4.1 最简单的mesh可视化 4.2 可视化三角网格和模型内表面 4.3 可视化多个mesh 1…

作者头像 李华
网站建设 2026/8/29 7:08:06

深度解析大模型微调技术:LoRA、QLoRA、DPO全对比,建议收藏!

深度解析2025年大模型微调技术:LoRA、QLoRA、DPO全对比,建议收藏! 文章系统介绍了大语言模型微调技术的演进与现状,重点分析了参数高效微调(PEFT)的革命性技术,包括LoRA及其改进版QLoRA、VeRA、DoRA和AdaLoRA&#xff…

作者头像 李华
网站建设 2026/8/29 7:08:22

为什么越来越多开发者选择PyTorch-CUDA预装镜像?

为什么越来越多开发者选择PyTorch-CUDA预装镜像? 在深度学习项目启动的前48小时里,你更愿意把时间花在模型设计上,还是反复折腾CUDA版本和驱动兼容性?这几乎是每个AI工程师都经历过的灵魂拷问。而如今,越来越多团队正在…

作者头像 李华