HTTP 缓存入门:强缓存与协商缓存,一篇讲清浏览器在想什么

举报
yd_234737719 发表于 2026/11/04 04:10:06 2026/11/04
【摘要】 强缓存让浏览器不发请求,协商缓存问一句再用:Cache-Control 与 ETag 的经典组合策略,入口 HTML 走协商、哈希资源走强缓存,以及 DevTools 排障技巧。

资源更新了但用户看到的还是旧版?或者每次刷新都重新下载几百 KB 的静态文件?这两个问题的答案都在 HTTP 缓存机制里。理解强缓存与协商缓存,前端与运维排障都会顺畅很多。

一、强缓存:不发请求

响应头带 Cache-Control: max-age=31536000 时,浏览器在有效期内直接用本地副本,根本不发请求(DevTools 里显示 from disk/memory cache)。适合带哈希指纹的静态资源(app.a3f9.js),变更即换文件名。

二、协商缓存:问一下再用

没有强缓存时,浏览器带 If-None-Match(ETag)或 If-Modified-Since 发请求问服务器:资源变了吗?没变返回 304 Not Modified,浏览器继续用本地副本——省流量但不省请求。适合 index.html 这类入口文件。

三、经典组合策略

  • 入口 HTML:Cache-Control: no-cache,每次走协商缓存,保证用户第一时间看到新版本;
  • 带哈希的 JS/CSS/图片:max-age=31536000, immutable,一年强缓存;
  • API 响应:按业务设定或直接 no-store,防止敏感数据被缓存。

四、排障技巧

怀疑缓存问题时:DevTools Network 面板勾选 Disable cache 复现;检查响应头是否有 Cache-Control;刷新类型有讲究——普通刷新走协商缓存,Ctrl+F5 强制刷新才绕过强缓存。

结语:强缓存负责"快",协商缓存负责"新",两者配合就是现代 Web 缓存的全部骨架。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。