---
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 互相污染。
- 弱网与离线:缓存命中后体验稳定;失败时合理回退。

发表评论 取消回复