关键词:http 状态码
304 是 HTTP 状态码中的“Not Modified”(未修改)状态码。
当客户端(通常是浏览器)向服务器请求资源时,如果服务器判断该资源自上次客户端获取后没有被修改,就会返回 304 状态码,告诉客户端可以使用其本地缓存的版本,而无需再次传输整个资源。
304 状态码主要与以下 HTTP 响应头有关:
一、Last-Modified
和 If-Modified-Since
-
Last-Modified
:- 服务器在首次响应资源时,在响应头中添加这个字段,表明资源的最后修改时间。
- 例如:
Last-Modified: Thu, 12 Oct 2023 10:30:00 GMT
。
-
If-Modified-Since
:- 当客户端再次请求该资源时,会在请求头中添加这个字段,其值为上次服务器返回的
Last-Modified
的值。 - 服务器收到请求后,会比较资源的最后修改时间与
If-Modified-Since
的值。如果资源自该时间后没有被修改,就返回 304 状态码。
- 当客户端再次请求该资源时,会在请求头中添加这个字段,其值为上次服务器返回的
二、ETag
和 If-None-Match
-
ETag
:- 服务器为资源生成的一个唯一标识符,通常基于资源的内容计算得出。
- 例如:
ETag: "abcdef123456"
。
-
If-None-Match
:- 当客户端再次请求资源时,会在请求头中添加这个字段,其值为上次服务器返回的
ETag
的值。 - 服务器收到请求后,会比较资源当前的
ETag
与If-None-Match
的值。如果一致,说明资源未被修改,返回 304 状态码。
- 当客户端再次请求资源时,会在请求头中添加这个字段,其值为上次服务器返回的