“Expire”头字段给出了超过它则响应被视为过期的时间/日期。查看4.2节了解新鲜度模式的进一步讨论。

    Expires字段的存在不意味着原始资源在那个时间前或后或那个时间点上资源将改变或不存在。

    Expires值是一个HTTP-date时间戳,如RFC7231的7.1.1.1节定义。

    1. Expires = HTTP-date

    例如

    1. Expires: Thu, 01 Dec 1994 16:00:00 GMT

    缓存接收者必须翻译无效的日期格式,特别的将值设为“0”,就像表示一个过去的时间一样(即,“已经过期”)。

    如果一个响应包含带有max-age指令的Cache-Control字段(5.2.2.8节),接收者必须忽略Expires字段。同样的,如果一个响应包含s-maxage指令(5.2.2.9节),一个共享缓存接收者必须忽略Expires字段。在这些情况下,Expires中的值只是给那些还没有实现Cache-Control字段的实现准备的。

    一个没有时钟的源服务器不得生成Expires字段,除非它的值表示一个固定的过去的时间(总是过期的)或它的值已经由系统或用户通过可靠的始终被关联到资源上。

    历史上,HTTP要求Expires字段值不能超过未来的一年。但是更长的新鲜度生命期并没有被禁止,特别巨大的值已经被证明会出现问题(例如,由于32位整数的使用造成的时钟溢出),并且很多缓存将在早于那个时间前淘汰那个缓存。