不能。现代浏览器完全忽略<meta http-equiv>设置的缓存头,缓存策略必须由服务端通过HTTP响应头(如Cache-Control、Expires)控制,且Cache-Control优先级高于Expires。

不能靠 <meta http-equiv> 设置过期时间——现代浏览器完全忽略它。 所有试图用 <meta http-equiv="Expires"> 或 <meta http-equiv="Cache-Control"> 控制缓存的行为,在 Chrome、Firefox、Safari、Edge 中均无效。缓存策略必须由服务端通过 HTTP 响应头决定。
为什么 <meta http-equiv> 失效
这个机制是 IE6 时代的遗留设计,仅模拟 HTTP 头,不真实发送;现代浏览器明确不解析其缓存相关值。你在 Network 面板里永远看不到它生成的 Expires 或 Cache-Control 响应头。即使写了 <meta http-equiv="Expires" content="0">,页面是否从缓存加载,仍完全取决于服务器实际返回的响应头。
真正该设置的 HTTP 响应头
服务端必须返回以下至少一项(优先级: Cache-Control > Expires):
-
Cache-Control: max-age=3600—— 资源可缓存 1 小时(推荐,时间基于请求发起时刻计算,不依赖客户端时钟) -
Cache-Control: no-cache—— 允许缓存,但每次使用前必须向服务器验证(发If-None-Match或If-Modified-Since) -
Cache-Control: no-store—— 禁止任何缓存(敏感页如登录态 HTML 必须用这个) -
Expires: Wed, 21 Oct 2026 07:28:00 GMT—— 绝对过期时间(需严格 GMT 格式,且客户端时间不准会导致行为偏差)
Nginx / Apache 配置示例
静态资源(CSS/JS/图片)适合长期缓存,HTML 通常需要短缓存或禁用:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
立即学习“前端免费学习笔记(深入)”;
location = /index.html {
expires 5m;
add_header Cache-Control "public, must-revalidate";
}上面配置让 HTML 最多缓存 5 分钟,并强制浏览器在使用前验证有效性。而对 JS 文件:
location ~* \.js$ {
expires 1y;
add_header Cache-Control "public, immutable";
}immutable 告诉浏览器:只要 URL 不变,内容就绝不会变——可跳过后续验证请求,提升性能。
开发调试时最容易踩的坑
本地起 dev server(如 Vite、Webpack Dev Server)默认不设缓存头,或设为 no-cache,导致你误以为“没缓存”是前端控制的;一上生产环境,Nginx/Apache 按默认规则缓存 HTML,立刻出现旧内容问题。更隐蔽的是:你改了 HTML,但 JS/CSS 的引用路径没变,浏览器照用旧缓存——这时候得靠文件哈希(如 main.a1b2c3.js)或版本参数(main.js?v=2.1)破缓存。


















