概述

ETag 作为资源标识符用于条件请求。客户端携带 If-None-Match 与 ETag,服务器匹配后返回 304 Not Modified,避免重复传输。

用法/示例


HTTP/1.1 200 OK
ETag: "686897696a7c876b7e"

GET /asset.css HTTP/1.1
If-None-Match: "686897696a7c876b7e"

// Node/Express 示例
app.get('/asset.css', (req, res) => {
  const etag = computeHash(content)
  if (req.headers['if-none-match'] === etag) res.status(304).end()
  else { res.set('ETag', etag); res.type('text/css').send(content) }
})

工程建议

  • 使用强/弱验证器(W/)区分字节级与语义级变更;与缓存头协同治理。
  • 确保跨节点一致的 ETag 生成,避免负载均衡导致失配。
  • 对压缩与变体(Vary)处理进行明确配置,避免错误复用。

参考与验证

  • MDN:ETag — https://developer.mozilla.org/docs/Web/HTTP/Headers/ETag
  • MDN:If-None-Match — https://developer.mozilla.org/docs/Web/HTTP/Headers/If-None-Match

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部