概述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/ETagMDN:If-None-Match — https://developer.mozilla.org/docs/Web/HTTP/Headers/If-None-Match

发表评论 取消回复