2021-12-12 09:36:15
HTTP状态码304表示“未修改”(Not Modified),其核心作用与运行机制如下:
1. 触发条件与核心逻辑
当客户端发起条件性请求(如包含If-Modified-Since或If-None-Match字段)时,服务器会检查请求资源的最后修改时间或唯一标识符(ETag)。若资源自客户端上次缓存后未发生任何变化,服务器即返回304状态码,告知客户端无需重新下载资源,直接使用本地缓存版本即可。
2. 优化网络传输的关键作用
304状态码通过缓存机制显著减少数据传输量:
3. 状态码的响应特征
服务器返回304时,响应体为空,仅包含状态码及少量头部信息(如Cache-Control、ETag等)。客户端需根据这些头部信息验证缓存有效性,而非依赖响应体内容。若缓存失效(如过期或校验不匹配),客户端会重新发起完整请求,此时服务器返回200 OK状态码并附带资源数据。
4. 典型应用场景
首次请求资源时,服务器返回200 OK状态码及资源,客户端缓存该资源并记录相关头部信息(如Last-Modified、ETag)。后续请求中,客户端携带这些信息发起条件性请求,若资源未修改,服务器返回304;若已修改,则返回200及新资源。这一机制广泛应用于静态资源(CSS、JS文件)、API数据等需要频繁访问但更新频率较低的场景。