错误页缓存操作

场景:

如果您希望减少响应错误的请求回源,或者您源站请求压力大,不能及时处理正常请求导致响应出错,希望缓存错误响应时间等待源站正常响应再处理;则您可以在创建完CDN后设置错误页响应操作
  1. 进入CDN管理平台,点击“错误页”导航栏,点击“+创建”
  2. 在创建界面,填写对应参数:
  3. * HTTP 错误代码:您可以选择对应的状态码如(400:错误请求、403:禁止、404:未找到等)

    *错误缓存最小 TTL (秒):当CDN响应对应的状态码时,CDN对该状态码的缓存时间

    响应页面路径:输入HTTP 状态代码自定义错误页面的路径和文件名,如 /error/403-forbidden.html

    HTTP 响应代码:希望CDN 将自定义错误页面一起返回给客户端的 HTTP 状态代码。

效果图示范:

自定义错误页响应与缓存

为特定HTTP状态码创建自定义错误页面

如果您希望CDN响应的特定HTTP状态码显示自定义的错误信息而不是默认的信息,您可以设置CDN向客户端返回包含自定义错误消息的对象(如HTML文件)

您可以设置每个HTTP 状态代码响应不同的对象,也可以对所有支持的状态代码响应同一个对象。还可以设置一些状态代码指定对象,另外一些状态代码不指定对象。

您通过CDN 提供的访问对象出于各种原因可能不可用。具体可以归纳下两大类:
  1. 客户端出错发送请求出现问题。例如,具有指定名称的对象不可用,当出现客户端错误时,源会向CDN 返回一个 400 区间内的 HTTP 状态代码。
  2. 服务器出错表示源服务器出现问题。例如,HTTP 服务器繁忙或不可用。在出现服务器错误时,源服务器将向 CDN 返回一个 500 范围的 HTTP 状态代码,或者 CDN 在某一时间段内未从源服务器中收到响应,并显示 504 状态代码 (Gateway Timeout)。
CDN 可以设置返回自定义错误页面的 HTTP 状态代码包含以下各项:
    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 可能会在源站对象再次转为可用后的很长一段时间内继续使用错误响应或您的自定义错误页面来响应请求。
如果您要控制 CDN为各个对象缓存错误的时间长度,可以配置源服务器以为该对象的错误响应添加相应标头: 备注:如果您设置的错误缓存时间超过源站正常响应处理的时间,您可以提前使对应文件的状态码失效,如果源返回针对多个对象的错误响应,您需要分别使各个对象失效。具体失效方式请参考“刷新CDN缓存”。

更改CDN响应代码

您可以设置CDN自定义错误页面返回特定的HTTP状态码。例如,如果源站向CDN返回404的状态码,您希望CDN向客户端返回错误页面和正常响应200状态码。对于特定场景下,您可能希望CDN返回给客户端的状态码不同于源站返回到CDN的状态码: 您可以将 CDN 配置为随自定义错误页面返回以下任意 HTTP 状态代码:
    200: 正常请求
    400:错误请求 403:禁止 404:未发现
    405:不允许的方法 414:请求URI过长 416:无法满足请求的范围
    500:内部服务器错误 501:未实现 502:无效网关
    503:服务不可用 504:网关超时