Expires
用法
Expires 头提供一个绝对时间戳,表示缓存响应何时失去新鲜度。缓存将该时间戳与当前时间比较,以判断存储的副本是否仍可使用。
当 Cache-Control 的 max-age 指令与 Expires 同时存在时,max-age 会取代 Expires。由于 max-age 使用相对的秒数值而非绝对日期,该指令可避免服务器与缓存之间的时钟偏差问题。现代缓存策略以 Cache-Control 作为主要的新鲜度机制,而 Expires 则作为不支持 max-age 的旧缓存的回退。
值为 0 或无效日期表示响应已经过期。缓存会立即将该条目视为已过期,从而在下一次请求时强制重新验证或重新获取。
该时间戳遵循与 Date 头相同的 IMF-fixdate 格式:
Expires: <day-name>, <day> <month> <year>
<hour>:<minute>:<second> GMT
注意
当同一响应中存在 Cache-Control: max-age 时,Expires 值会被忽略。对于新的实现,应优先使用 max-age。
示例
一个在星期三 08:00 UTC 过期的响应。任何在指定时间之后持有该响应的缓存都会将该副本视为已过期。
Expires: Wed, 04 Jun 2025 08:00:00 GMT
一个被标记为已过期的响应。将值设为 0 会强制缓存在每次请求时都进行重新验证。
Expires: 0
一个与 Cache-Control 搭配以实现向后兼容的 Expires 头。max-age 指令优先,使该响应获得一小时的新鲜期,而与 Expires 时间戳无关。
Cache-Control: max-age=3600
Expires: Thu, 01 Jan 1970 00:00:00 GMT