DevToolPal
简
3xx 重定向

304 Not Modified

未修改

含义

客户端已有的缓存副本仍然有效,因此服务器不发送响应体。它是对带 If-None-Match 或 If-Modified-Since 的条件请求的回应。

常见原因

  • If-None-Match 中的 ETag 与当前版本一致
  • 资源自 If-Modified-Since 以来没有变化
  • 浏览器在重新验证缓存的静态资源

解决方法

客户端或访问者

使用缓存的内容。如果内容看起来过时,可能是验证器有问题;强制刷新或检查 ETag 的生成方式。

网站或 API 的维护者

生成稳定的 ETag(负载均衡后的各台服务器要一致),并发送与 200 相同的缓存头。

响应示例

HTTP/1.1
HTTP/1.1 304 Not Modified
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
ETag: "33a64df5"
Cache-Control: max-age=3600

规范

RFC 9110 §15.4.5

常见问题

› 304 是错误吗?

不是。它告诉客户端缓存仍是最新的,从而节省带宽。

› 为什么部署后用户看到的还是旧文件?

缓存头允许使用旧副本。静态资源使用带指纹的文件名,HTML 使用较短的 max-age 并配合验证。