错误页缓存操作
场景:
如果您希望减少响应错误的请求回源,或者您源站请求压力大,不能及时处理正常请求导致响应出错,希望缓存错误响应时间等待源站正常响应再处理;则您可以在创建完CDN后设置错误页响应操作- 进入CDN管理平台,点击“错误页”导航栏,点击“+创建”
- 在创建界面,填写对应参数:
- 是否自定义错误响应:这里选择“否”(跳过下面步骤)
- 是否自定义错误响应:选择“是”则需要配置”响应页面路径“与”响应代码“
* HTTP 错误代码:您可以选择对应的状态码如(400:错误请求、403:禁止、404:未找到等)
*错误缓存最小 TTL (秒):当CDN响应对应的状态码时,CDN对该状态码的缓存时间
HTTP 响应代码:希望CDN 将自定义错误页面一起返回给客户端的 HTTP 状态代码。
效果图示范:
自定义错误页响应与缓存
为特定HTTP状态码创建自定义错误页面
如果您希望CDN响应的特定HTTP状态码显示自定义的错误信息而不是默认的信息,您可以设置CDN向客户端返回包含自定义错误消息的对象(如HTML文件)您可以设置每个HTTP 状态代码响应不同的对象,也可以对所有支持的状态代码响应同一个对象。还可以设置一些状态代码指定对象,另外一些状态代码不指定对象。
您通过CDN 提供的访问对象出于各种原因可能不可用。具体可以归纳下两大类:- 客户端出错发送请求出现问题。例如,具有指定名称的对象不可用,当出现客户端错误时,源会向CDN 返回一个 400 区间内的 HTTP 状态代码。
- 服务器出错表示源服务器出现问题。例如,HTTP 服务器繁忙或不可用。在出现服务器错误时,源服务器将向 CDN 返回一个 500 范围的 HTTP 状态代码,或者 CDN 在某一时间段内未从源服务器中收到响应,并显示 504 状态代码 (Gateway Timeout)。
- 400:错误请求 403:禁止 404:未发现
- 405:不允许的方法 414:请求URI过长 416:无法满足请求的范围
- 500:内部服务器错误 501:未实现 502:无效网关
- 503:服务不可用 504:网关超时
控制缓存错误状态码的时长
当您开启错误页缓存后,默认情况下,当源站返回 HTTP 4xx 或 5xx 状态代码时,CDN 将缓存这些错误响应 10 秒钟。然后,CDN 会向源提交下一个请求以查看发生错误的问题是否已得到解决以及请求的对象现在是否可用。 您可以为CDN缓存的错误状态码指定对应的时长- 在指定持续时间时,需要注意以下几点:
- 1.如果您指定一个很短的错误缓存时间,则与指定较长的时间相比,CDN将向源站转发更多请求。对于 5xx 错误,这可能会加重原先导致源返回错误的问题。
- 2.当源针对某个对象返回错误时,CDN 会通过错误响应或自定义错误页面响应对象请求,直到超过设置的错误缓存时间。如果您指定一个很长的错误缓存时间,CDN
可能会在源站对象再次转为可用后的很长一段时间内继续使用错误响应或您的自定义错误页面来响应请求。
- 如果源添加Cache-Control max-age 或 Cache-Control s-maxage 指令或 Expires 标头:CDN 缓存错误响应的时间为标头中的值或错误缓存最小 TTL 值(以较大的值为准)。
- 如果源添加其他Cache-Control 指令或不添加标头:CDN 缓存错误响应的时间等于错误缓存最小TTL 值。
更改CDN响应代码
您可以设置CDN自定义错误页面返回特定的HTTP状态码。例如,如果源站向CDN返回404的状态码,您希望CDN向客户端返回错误页面和正常响应200状态码。对于特定场景下,您可能希望CDN返回给客户端的状态码不同于源站返回到CDN的状态码:- 一些 Internet 设备 (例如,一些防火墙和企业代理) 会拦截 HTTP 4xx 和 5xx 状态代码,防止响应返回到查看器。如果替换为200,则通常不会拦截响应。
- 如果您不希望区分不同的客户端错误或服务器错误,您可以将 CDN 为所有 4xx 或 5xx 状态代码返回的值指定为400 或 500。
- 您可能希望返回200 状态代码 (OK) 和静态网站,确保客户不知道网站宕机。
- 200: 正常请求
- 400:错误请求 403:禁止 404:未发现
- 405:不允许的方法 414:请求URI过长 416:无法满足请求的范围
- 500:内部服务器错误 501:未实现 502:无效网关
- 503:服务不可用 504:网关超时