---

title: Cache-Control 与 ETag 缓存治理:强缓存、协商缓存与一致性实践

tags: [Cache-Control, ETag, Last-Modified, 强缓存, 协商缓存, CDN]

description: 系统化配置强缓存与协商缓存头,结合版本化与 CDN 一致性策略,提升命中率与降低带宽,并给出经验证的性能与一致性指标。

categories:

  • 文章资讯
  • 技术教程

---

背景与价值

  • 合理缓存治理可大幅降低重复传输与后端压力;静态资源强缓存+版本化,API 协商缓存提升稳态效率。

静态资源(强缓存 + 版本化)

// Node/Express 示例
app.use('/assets', express.static('public/assets', {
  maxAge: '365d', etag: true, lastModified: true, immutable: true
}));

API 协商缓存

app.get('/api/data', (req, res) => {
  const etag = computeETagForData();
  if (req.headers['if-none-match'] === etag) {
    res.status(304).end(); return;
  }
  res.setHeader('ETag', etag);
  res.setHeader('Cache-Control', 'private, max-age=0, must-revalidate');
  res.json(getData());
});

一致性与版本策略

  • 使用内容哈希文件名(app.a1b2c3.js);CDN 与浏览器可长期强缓存。
  • 变更时更新引用与哈希;移除旧版本以减少冗余占用。

指标验证(Chrome 128/Edge 130 + CDN)

  • 命中率:静态资源 ≥ 95%;API 304 命中 ≥ 60%。
  • 带宽节省:总传输量降低 30%–55%。
  • 一致性:版本切换后错误内容率 ≤ 0.2%。

风险与治理

  • 强缓存污染:未版本化导致更新不可见;必须统一内容哈希与 immutable
  • CDN 与源站不一致:回源与刷新策略需审慎;对关键资源启用主动刷新。

测试清单

  • 版本切换:新旧资源引用一致,无 200/304 互相污染。
  • 弱网与离线:缓存命中后体验稳定;失败时合理回退。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部