CDN节点从源站获取资源时,源站会返回响应状态码,您可以在阿里云CDN上配置状态码缓存时间,当客户端再次请求相同资源时,由CDN直接响应状态码,不会触发回源,减轻源站压力。当状态码在CDN上的存储时长超过设置的缓存时间,缓存的状态码会失效,此时针对同一资源的请求需要回源。
适用场景
配置状态码过期时间主要适用于源站响应了异常状态码的情况下,用于指定CDN节点上执行的缓存处理动作。
正常情况下CDN节点成功从源站获取到所请求的资源,即源站响应了2xx状态码时,会按照阿里云CDN缓存规则及优先级进行缓存。如果源站无法迅速响应所有状态码(例如非2xx状态码),且不希望所有请求全部由源站响应,那么可以配置状态码过期时间,由CDN节点直接响应状态码,减轻源站压力。
典型场景:文件A在源站已被删除,但客户端仍持续访问,CDN节点没有缓存文件A,所有针对文件A的请求都将被转发回源,由源站响应4xx状态码,这将会大幅增加源站的压力。如果CDN节点上配置了缓存4xx状态码,那么CDN节点针对文件A的请求首次回源后,会缓存4xx状态码,在预设缓存时间内,当客户端再次请求文件A时,将会由CDN节点直接响应4xx状态码,无需回源。
异常状态码缓存规则
- 对于204、305、400、403、404、405、414、500、501、502、503和504状态码,缓存规则如下图所示:
- 开启配置Range回源功能,缓存规则如下:
- 非200、206状态码(包含但不限于204、305、400、403、404、405、414、500、501、502、503和504状态码)的情况下,均不缓存。
200、206状态码按照阿里云CDN缓存规则及优先级进行缓存。
- 收到5xx状态码会删除已缓存的分片文件(回源超时不会删除缓存文件)。
说明 Range回源情况下,源站会把一个大文件分割成多个小的文件分片来返回给CDN节点。比如有个文件被分割成了10个分片,CDN节点已经缓存了5个分片,在请求第6个分片时,源站响应了5xx状态码,这时会把前面已经缓存的5个分片全部删除。
- 非200、206状态码(包含但不限于204、305、400、403、404、405、414、500、501、502、503和504状态码)的情况下,均不缓存。
- 未开启配置Range回源功能,按照如下规则缓存:
- 如果源站返回
set-cookie
响应头,CDN不缓存。 - 如果源站没有返回
Set-Cookie
响应头,则遵循CDN控制台配置的状态码过期时间来缓存,配置多条规则时生效方式请参考多条规则生效优先级说明。 - 如果源站没有返回
Set-Cookie
响应头,CDN控制台也没有配置状态码过期时间,则按照源站设置的Pragma
、Cache-Control
或者Expires
响应头来缓存。 - 如果源站没有返回
Set-Cookie
、Pragma
、Cache-Control
或者Expires
响应头,CDN控制台也没有配置状态码过期时间,则默认缓存1秒。
- 如果源站返回
- 开启配置Range回源功能,缓存规则如下:
- 对于303、304、401、407、600和601状态码,CDN均不进行缓存。
多条规则生效优先级说明
操作步骤
配置示例
-
示例一:目录类型规则
创建目录类型规则如下图所示:在/directory/aaa目录下,所有4xx状态码缓存时间为10秒,201状态码缓存时间为15秒,在该时间区间内,由CDN节点直接响应对应的访问请求;超过该时间后,会触发回源。
-
示例二:文件后缀名类型规则
创建文件后缀名类型规则如下图所示:文件后缀为.jpg或.txt类型,403状态码缓存时间为10秒,404状态码缓存时间为15秒,在该时间区间内,由CDN节点直接响应对应的访问请求;超过该时间后,会触发回源。
-
示例三:不同类型规则的生效优先级
分别创建了一条“目录类型规则”和一条“文件后缀名类型规则”,设置了不同的状态码过期时间,如下图所示:用户请求
http://example.com/directory/aaa/test.jpg
,CDN节点上没有缓存资源,CDN节点向源站请求资源,源站响应了404状态码,这里同时匹配上了“目录类型规则”和“文件后缀名类型规则”,因为在规则类型不同的情况下,规则生效优先级是文件后缀名>目录,所以“文件后缀名类型规则”生效,404状态码的实际缓存时间是20秒。 -
示例四:相同类型多条规则的生效优先级
先创建了一条“目录类型规则一”,匹配的地址是“/directory”,然后再创建另一条“目录类型规则二”,匹配的地址是“/directory/aaa”,设置了不同的状态码过期时间,如下图所示:用户请求
http://example.com/directory/aaa/test.jpg
,CDN节点上没有缓存资源,CDN节点向源站请求资源,源站响应了404状态码,这里同时匹配上了两条“目录类型规则”,因为在规则类型相同的情况下,规则生效优先级是早创建的>晚创建的,所以最早创建的“目录类型规则一”生效,404状态码的实际缓存时间是15秒。