服务器返回状态码304表示“Not Modified”,属于HTTP重定向类状态码。以下是详细解析:
1. 缓存机制核心作用
当客户端(如浏览器)对资源发起条件请求时(请求头携带`If-Modified-Since`或`If-None-Match`),服务器会比对资源修改时间或ETag标识。若资源未变化,则返回304,告知客户端可复用本地缓存,减少带宽消耗和加载时间。
2. 触发条件
- 请求方法必须为`GET`或`HEAD`
- 请求头需包含`If-Modified-Since`(时间戳比对)或`If-None-Match`(ETag校验)
- 服务器确认资源未修改
3. 与200状态码的区别
304响应不含实体内容(body为空),仅返回响应头(如`Cache-Control`、`ETag`);而200 OK会返回完整的资源数据,消耗更多传输资源。
4. 性能优化意义
- 降低服务器负载:避免重复传输静态文件(如图片、CSS/JS)
- 加速页面渲染:客户端直接读取本地缓存,减少网络延迟
- 节省移动端流量:对按流量计费的用户尤为重要
5. 配置注意事项
- 确保服务器正确生成`Last-Modified`和`ETag`响应头
- 动态资源需显式设置缓存策略,避免错误返回304
- CDN边缘节点通常依赖304实现高效缓存分发
6. 调试排查要点
- 通过浏览器开发者工具的Network面板观察304请求
- 检查缓存控制头(如`Cache-Control: max-age`)是否合理
- 清除本地缓存可强制获取最新资源(200响应)
附加知识:HTTP/2的Server Push技术可主动推送资源,但客户端仍可能通过304验证缓存有效性。在RESTful API设计中,304常用于优化频繁查询的场景。
查看详情
查看详情