控制 CloudFront 缓存错误的时间长度 - Amazon CloudFront

控制 CloudFront 缓存错误的时间长度

CloudFront 缓存错误响应的默认持续时间为 10 秒。CloudFront 然后将对象的下一个请求提交给您的源,以查看导致错误的问题是否已解决,并且请求的对象是否可用。

您可以为 CloudFront 缓存的各 4xx 和 5xx 状态代码指定错误缓存时长(错误缓存最小 TTL)。(有关更多信息,请参阅 CloudFront 缓存的 HTTP 4xx 和 5xx 状态代码。) 指定持续时间时,注意以下几点:

  • 如果您指定一个很短的错误缓存时长,则与指定较长的时长相比,CloudFront 将向您的源转发更多请求。对于 5xx 错误,这可能会加重原先导致源返回错误的问题。

  • 当源针对某个对象返回错误时,CloudFront 会通过错误响应或自定义错误页面响应对象请求,直到超过错误缓存时间长度。如果您指定一个很长的错误缓存持续时间,CloudFront 可能会在对象再次转为可用后的很长一段时间内继续使用错误响应或您的自定义错误页面来响应请求。

注意

您可以为 HTTP 状态代码 416(无法满足请求的范围)创建自定义错误页面,并可以更改源向 CloudFront 返回状态代码 416 时 CloudFront 向查看器返回的 HTTP 状态代码。(有关更多信息,请参阅 更改 CloudFront 返回的响应代码。) 但是,CloudFront 不缓存状态代码 416 响应,因此,即使您为状态代码 416 指定错误缓存最小 TTL 的值,CloudFront 也不会使用它。

如果您要控制 CloudFront 为各个对象缓存错误的时间长度,可以配置源服务器以为该对象的错误响应添加相应标头。

如果源添加 Cache-Control: max-ageCache-Control: s-maxage 指令或 Expires 标头,则 CloudFront 缓存错误响应的时间为标头中的值或错误缓存最小 TTL 值(以较大的值为准)。

注意

Cache-Control: max-ageCache-Control: s-maxage 值不能大于为提取错误页面的缓存行为设置的最大 TTL 值。

如果源添加其他 Cache-Control 指令或不添加标头,则 CloudFront 缓存错误响应的时间等于错误缓存最小 TTL 的值。

如果某一对象的 4xx 或 5xx 状态代码的过期时间超过您希望等待的时间且对象再次可访问,您可以使用所请求对象的 URL 使缓存错误代码失效。如果源返回针对多个对象的错误响应,您需要分别使各个对象失效。有关使对象失效的更多信息,请参阅 使文件失效以删除内容