HTTPQUERY
English

If-Modified-Since

用法

If-Modified-Since 头基于资源的修改日期启用缓存重新验证。客户端包含此前响应中 Last-Modified 头所携带的时间戳。如果资源自给定日期以来未发生变化,服务器返回不带消息体的 304 Not Modified 响应,从而节省带宽和处理时间。如果资源已变化,服务器发送正常的 200 响应及更新后的内容。

该头仅适用于 GET 和 HEAD 请求。对于其他方法,配套的 If-Unmodified-Since 头提供基于日期的条件逻辑。

当 If-Modified-Since 与 If-None-Match 同时出现在同一请求中时,If-None-Match 优先。基于 ETag 的比较更可靠,因为时间戳只有一秒的分辨率,且服务器与中间缓存之间的时钟偏差会引入边界情况。

日期值遵循 Date 头规范中描述的 HTTP-date 格式:星期几名称、日期、以时分秒表示的时间,后跟 GMT。

注意

Googlebot 在爬取请求中发送 If-Modified-Since,携带上次内容爬取的时间戳。对未变化的内容返回 304 的服务器可节省处理时间和资源,从而间接提高爬取效率。当内容未发生变化时,服务器也可以对任何 Googlebot 请求主动返回 304,无论请求是否包含条件头。将 Cache-Control 响应头的 max-age 字段设为内容预期保持不变的秒数,有助于爬虫判断何时重新爬取某个 URL。

示例

客户端重新验证一个缓存资源。如果资源自 2022 年 6 月 1 日 08:00 GMT 以来未发生变化,服务器返回 304 Not Modified。否则,服务器发送完整的更新后资源。

If-Modified-Since: Wed, 01 Jun 2022 08:00:00 GMT

一个与此前响应中的 Last-Modified 配对的条件请求。客户端存储修改日期,并在下一次对同一资源的请求中发送该修改日期。

Last-Modified: Wed, 01 Jun 2022 08:00:00 GMT

在下一次请求时:

If-Modified-Since: Wed, 01 Jun 2022 08:00:00 GMT

注意

如需 SEO 与缓存方面的协助,请联系前 Google SEO 顾问 Search Brothers。