news 2026/4/22 14:04:12

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/4/22 11:57:06

RoPE位置编码原理解析:在PyTorch-CUDA-v2.7中实现细节

RoPE位置编码原理解析:在PyTorch-CUDA-v2.7中实现细节 在大语言模型(LLM)飞速演进的今天,Transformer 架构早已成为自然语言处理领域的基石。然而,随着上下文长度不断扩展——从最初的512扩展到如今动辄32K甚至更长—…

作者头像 李华
网站建设 2026/4/21 12:08:19

大模型上下文扩展技术:PyTorch-CUDA-v2.7支持长序列处理

大模型上下文扩展技术:PyTorch-CUDA-v2.7支持长序列处理 在当前大语言模型(LLM)飞速发展的背景下,上下文长度的扩展已不再是锦上添花的功能,而是决定模型能否真正理解复杂文档、实现跨段落推理甚至长期对话记忆的关键能…

作者头像 李华
网站建设 2026/4/20 9:50:53

Git工作流规范:在PyTorch项目中实施Branch策略

Git工作流规范:在PyTorch项目中实施Branch策略 在现代AI团队的日常开发中,你是否经历过这样的场景:同事刚提交的代码导致整个训练流程崩溃,而问题原因竟是他本地装了不同版本的PyTorch?或者你在复现一篇论文实验时&…

作者头像 李华
网站建设 2026/4/21 21:46:53

分布式数据并行(DDP)配置:PyTorch-CUDA-v2.7多卡训练教程

分布式数据并行(DDP)配置:PyTorch-CUDA-v2.7多卡训练实战指南 在当今深度学习模型动辄数十亿参数的背景下,单张GPU早已无法支撑主流任务的训练需求。从大语言模型到高分辨率图像生成,算力瓶颈成为制约研发效率的关键因…

作者头像 李华
网站建设 2026/4/18 2:01:19

Jupyter密码设置与安全访问:PyTorch容器使用注意事项

Jupyter密码设置与安全访问:PyTorch容器使用注意事项 在如今的AI开发实践中,越来越多工程师选择在远程服务器或云平台上运行搭载 PyTorch 和 Jupyter 的 Docker 容器。这种组合极大提升了开发效率——无需繁琐配置即可快速进入模型调试环境。但随之而来的…

作者头像 李华
网站建设 2026/4/21 16:19:56

适合新手的5个爬虫工具软件,非常强大~

爬虫,又称为网络爬虫或网页爬虫,是一种自动浏览互联网的程序,它按照一定的算法顺序访问网页,并从中提取有用信息。爬虫软件通常由以下几部分组成: - 用户代理(User-Agent):模拟浏览…

作者头像 李华