首页 / SEO book / 技术 SEO / 304 未修改是什么、怎么用

什么是 304 Not Modified(未修改)?

304 未修改是什么、怎么用技术 SEO

304 Not Modified 是服务器返回的一种 HTTP 响应状态码,表示资源未被修改,客户端仍持有缓存副本,无需重新传输。

什么是 304 Not Modified 响应?

304 Not Modified 是一种 HTTP 服务器响应状态码,表示所请求的资源自上次加载以来未被修改,因此无需再次传输。

对浏览器而言,这意味着可以向用户显示该资源的缓存版本。对抓取工具(例如 Googlebot)而言,这意味着无需重新抓取该页面,因为页面上的内容没有任何变化。

其工作原理大致如下:

  1. 当客户端(浏览器或抓取工具)首次向 Web 服务器请求某个资源时,服务器会发送所请求的资源(并附带 200 OK HTTP 状态码)以及它的哈希代码,称为 ETag。客户端还会记录它请求该页面/资源的时间。
  2. 当客户端再次请求该资源时,服务器会检查客户端发来的 If-None-Match 和/或 If-Modified-Since 请求头。这就是所谓的条件式 HTTP 请求。 If-None-Match 包含 ETag(内容哈希代码)。如果它与服务器上的值匹配,就表明内容没有发生变化,无需再次加载(内容一旦改变,其哈希代码也会随之改变)。 If-Modified-Since 包含客户端上次请求该内容的日期和时间。如果服务器发现内容自该日期以来没有变化,就无需把资源发送给客户端。 在这两种情况下,服务器都会返回 304 HTTP 状态码。 当同时使用 If-None-Match 和 If-Modified-Since 时,If-None-Match 的优先级高于 If-Modified-Since。
  3. 当浏览器从服务器收到 304 Not Modified HTTP 状态码时,它会向用户显示缓存版本。这就是为什么 304 属于客户端重定向状态码之一。

为什么 304 响应状态码很重要?

对于小型网站来说,304 HTTP 状态码所提供的缓存机会并不那么关键。

但对于大型网站而言,304 响应状态码是一个节省抓取预算的绝佳机会。Google 的抓取工具不会重新抓取未发生变化的页面,从而能够抓取更多新的和已更新的页面。