缓存过期时间指源站资源在CDN节点缓存的时长,达到预设时间,资源将会被CDN节点标记为失效资源。如果客户端向CDN节点请求的资源已经失效,CDN会回源站获取最新资源并缓存到CDN节点。您可以根据业务需求,按目录或文件后缀名配置静态资源的缓存过期时间。
注意事项
- 您成功添加域名后,可以修改缓存时间。设置的缓存时间长短会导致回源流量不一样,费用也有所不同,建议根据不同的业务需求设置缓存时长。缓存过期时间会影响回源频率,建议根据实际业务需求设置资源缓存时长。 - 缓存过期时间过短,会导致CDN频繁回源,增加源站的流量消耗;缓存过期时间过长,会带来数据更新时间慢的问题。 
- 缓存在CDN节点上的资源,如果该资源的访问热度较低(同一个CDN节点上的同一个资源被客户端访问的频次较低),那么很可能会在缓存过期之前被CDN节点上其他访问热度较高的资源覆盖。 
- CDN节点在收到源站响应的静态文件资源的时候,默认会按照阿里云CDN默认缓存规则及优先级来执行。 
- 建议您源站的内容不使用同名更新,而是采用版本号的方式同步。 - 为了能准确找到更新前和更新后的源站内容,建议您源站的内容以版本号的方式同步,即更新源站内容时采用不同的名称。例如,采用img-v1.0.jpg、img-v2.1.jpg的方式命名。 
操作步骤
- 登录CDN控制台。 
- 在左侧导航栏,单击域名管理。 
- 在域名管理页面,找到目标域名,单击操作列的管理。 
- 在指定域名的左侧导航栏,单击缓存配置。 
- 在缓存过期时间页签下,单击添加。  - 参数 - 说明 - 类型 - 支持按目录或文件后缀名指定资源范围。 - 目录:为某一路径下所有资源设置相同缓存规则。 
- 文件后缀名:为某一文件类型资源的设置相同缓存规则。 
 - 地址 - 指定待配置资源的目录或文件后缀名。 - 类型选择目录时,填写规则如下: - 每次只能添加单条目录,可以用正斜线(/)匹配所有目录。 
- 支持输入目录的完整路径,须以正斜线(/)开头,例如/directory/aaa。 
 
- 类型选择文件后缀名时,填写规则如下: - 支持输入一个或多个文件后缀名,多个文件后缀名用半角逗号(,)分隔,例如 - jpg,txt。
- 大小写敏感,注意区分大小写。 
- 不支持用星号(*)匹配所有的文件类型。 
 
 - 过期时间 - 资源在CDN节点的缓存时间,最长可以设置3年。建议参考如下规则配置: - 不常更新的静态文件(例如,图片类型、应用下载类型等),建议设置1个月以上。 
- 频繁更新的静态文件(例如,JS、CSS等),根据实际业务情况设置。 
- 动态文件(例如,PHP、JSP、ASP等),建议设置为0s,即不缓存。 
 - 优选遵循源站缓存策略 - 开启后,如果源站响应了缓存策略标头(包括 Cache-Control 和 Pragma ),那么源站响应的缓存策略将会优先生效。 - 忽略源站不缓存标头 - 开启后,CDN节点将会忽略源站响应的以下几个缓存策略标头(这几个标头均表示不缓存)。 - Cache-Control: no-store 
- Cache-Control: no-cache 
- Cache-Control: max-age=0 
- Pragma: no-cache 
 - 客户端跟随CDN缓存策略 - 开启后,CDN节点会将最终生效的缓存策略响应给客户端。 - 强制内容重新验证 - 该参数只在缓存过期时间为0时生效,使用效果如下: - 关闭(默认):CDN的缓存过期时间配置为0时,CDN节点上不缓存文件,每次请求都需要回源获取内容。 
- 开启:CDN的缓存过期时间配置为0时,支持在CDN节点上缓存文件,每次请求都需要回源验证缓存内容。 
 - 权重 - 权重即缓存规则的优先级。取值为1~99,数值越大优先级越高,对应规则优先生效。 说明- 有多条缓存规则的情况下,建议每条缓存规则都设置不同的权重,通过权重来控制规则执行优先级。 
- 权重相同的规则生效优先级:先创建的>后创建的,与规则类型无关。 
- 如果配置了多条缓存策略,其中一条缓存策略生效后将不再继续匹配其他的缓存策略。 
 - 规则条件 - 规则条件能够对用户请求中携带的各种参数信息进行识别,以此来决定某个配置是否对该请求生效。 - 不使用:不使用规则条件。 
- 若需新增或编辑规则条件,请在规则引擎中进行管理。 
 
- 单击确定,完成配置。 
阿里云CDN默认缓存规则及优先级
对于源站响应的200、203、206、300、301、308、410状态码,缓存过期时间按以下规则生效。
CDN节点在收到源站响应的文件资源的时候,会按照以下的缓存规则来执行(数值越小,优先级越高):
- 源站响应 - pragma:no-cache、- cache-control:no-cache(或者- no-store,或者- max-age=0)时,CDN遵循源站的策略,完全不缓存资源。
- CDN控制台设置的缓存过期时间或者状态码过期时间。 说明- 若CDN请求同时命中多条规则,有且仅有一条规则会生效,优先级为:权重>规则创建时间。 - 有多条缓存规则的情况下,建议每条缓存规则都设置不同的权重(权重越大优先级越高),通过权重来控制规则执行优先级。 
- 权重相同的规则生效优先级:先创建的>后创建的,与规则类型无关。 
 
- 源站配置其他缓存规则,优先级由高至低为: - cache-control>- expires>- last-modified>- ETag。- 如果源站响应中携带了 - cache-control,参数值包含- max-age或- s-maxage,并且- max-age或- s-maxage的值大于0,则使用- cache-control设置缓存过期时间,例如:cache-control:max-age=3600。如果同时存在- max-age和- s-maxage,则以- s-maxage的值为准。
- 如果源站响应中没有携带 - cache-control,但是携带了- Expires,则使用- Expires设置缓存过期时间,例如:expires:Tue, 25 Nov 2031 17:25:43 GMT。
- 如果源站响应中没有携带 - cache-control和- Expires,但是携带了- last-modified,则使用以下规则来计算缓存时间:使用公式(当前时间-- last-modified)* 0.1,计算结果在10秒~3600秒及之间的,取计算结果时间;小于10秒的,按照10秒处理;大于3600秒的,按照3600秒处理。
- 如果源站响应中没有携带 - cache-control、- Expires和- last-modified,但是携带了- ETag,缓存10秒。
 
- 如果源站返回的数据中, - cache-control、- expires、- last-modified和- ETag这些缓存策略相关的响应头都没有携带,则默认不缓存。
缓存响应信息说明
- Date:- 表示源站响应该资源给CDN节点的时间。 
- 当CDN节点与源站重新验证资源(通过在回源请求中携带 - If-Modified-Since标头或- If-None-Match标头),并且源站返回304状态码时,将会更新Date信息。
- 格式为GMT(格林尼治标准时间)时区的时间格式,例如: - Sat, 19 Apr 2025 08:58:31 GMT。
 
- X-Cache:- 表示本次请求的资源是否命中在CDN节点上的缓存,不同状态的说明详见下表。 - 状态 - 说明 - HIT- 在CDN节点中命中了该资源的缓存。 - MISS- 在CDN节点中没有命中该资源的缓存,而是由源站服务器提供的该资源。 
- X-Swift-Cachetime:- 表示该资源在CDN节点上的缓存过期时间,单位为秒。 
- X-Swift-Cachetime=- Ali-Swift-Global-Savetime+ CDN设置的缓存过期时间 -- X-Swift-SaveTime。
- X-Swift-Cachetime并不完全等于CDN设置的缓存过期时间,可能会出现以下3种情况:- X-Swift-Cachetime= CDN设置的缓存过期时间,例如:3600秒。
- X-Swift-Cachetime略小于CDN设置的缓存过期时间,例如:CDN设置的缓存过期时间为300秒,但是- X-Swift-Cachetime为295秒,这种情况可能的原因有以下:- L1节点回源L2节点的延迟较大。 
- L1节点与L2节点上的时钟不同步。 
 
- X-Swift-Cachetime的数值为负数,这种情况可能的原因是用户对CDN设置的缓存过期时间做了调整,客户端访问的时候,L1节点上的缓存已经过期,L2节点上的缓存尚未过期。例如:原先CDN设置的缓存过期时间为3600秒,后来调整到了300秒,客户端首次访问之后过600秒再次访问,这时候收到- X-Swift-Cachetime:-300,对于这个情况,通过刷新缓存可以解决。
 
 
- X-Swift-SaveTime:- 表示该资源首次进入到客户端直接访问的 CDN节点( L1 层节点)的时间。 
- 格式为GMT(格林尼治标准时间)时区的时间格式,例如: - Sat, 19 Apr 2025 08:58:31 GMT。
 
- Ali-Swift-Global-Savetime:- 表示该资源首次进入到CDN节点(由站点的缓存架构决定,可能是L2节点,也可能其他的缓存层级节点)的时间。 
- 格式为Unix时间戳,例如: - 1745053111,表示- 2025-04-19 16:58:31。
 
HTTP协议缓存控制机制说明
在HTTP协议中定义了三种不同类型的协议头部来实现缓存控制相关的机制:
配置示例
示例一:需要对“.txt”格式的文件缓存7天,在CDN控制台增加一条文件名后缀为“txt”的缓存规则,缓存过期时间设置为“7天”。

示例二:为加速域名demo.aliyun.com配置以下缓存策略,CDN节点回源下载资源http://demo.aliyun.com/image/example.png,虽然以下两条规则都匹配到了,但是因为这两条规则的权重相同,因此要判断规则创建的时间,先创建的规则优先级高于后创建的,因为目录/image这条规则创建的时间更早,所以系统最终生效的是目录类型这条规则。
