缓存过期时间指资源在CDN节点上缓存的时长。CDN的默认缓存时间最短为10秒,最长为3600秒,资源过期后会自动从CDN节点删除,您向CDN节点发起的访问请求会被判定为无效,请求会回源站获取最新资源并缓存到CDN节点。您可以根据业务需求,按目录或文件后缀名配置静态资源的缓存过期时间。

您可以通过以下内容了解和配置缓存过期时间:

背景信息

CDN节点上资源的缓存策略如下图所示。缓存策略
源站是否设置了缓存规则 CDN控制台是否设置了缓存规则 CDN节点上的缓存行为
是,设置了pragma:no-cache、cache-control:no-cache、cache-control:no-store或cache-control:max-age=0 不涉及 遵循源站的缓存规则。即CDN节点不缓存源站资源,用户每次访问都需要回源,无法实现加速。
是,未设置pragma:no-cache、cache-control:no-cache、cache-control:no-store或cache-control:max-age=0
遵循CDN控制台设置的缓存规则。CDN控制台上设置的缓存规则的优先级由高至低为:权重配置>文件后缀名>目录。
说明
  • CDN从源站下载的某个资源同时匹配上两条权重相同的文件后缀名缓存规则和目录缓存规则时,因为文件后缀名缓存规则的优先级更高,所以只有文件后缀名缓存规则会生效。
  • 两条相同类型(文件后缀名类型或目录类型)和权重的缓存规则,生效优先级随机。
遵循源站的其他缓存规则。

源站返回的数据的响应头优先级由高至低为:cache-control>expires>last-modified>etag。

如果源站响应了last-modified或者etag缓存规则,将遵循阿里云CDN的的缓存时间生成算法,默认缓存时间最短为10秒,最长为3600秒。

遵循CDN控制台设置的缓存规则。CDN控制台上设置的缓存规则的优先级由高至低为:权重配置>文件后缀名>目录。
说明
  • CDN从源站下载的某个资源同时匹配上两条权重相同的文件后缀名缓存规则和目录缓存规则时,因为文件后缀名缓存规则的优先级更高,所以只有文件后缀名缓存规则会生效。
  • 两条相同类型(文件后缀名类型或目录类型)和权重的缓存规则,生效优先级随机。
默认不缓存。

默认缓存规则

阿里云CDN节点在收到源站响应的静态文件资源的时候,会按照以下的缓存规则来执行(数值越小,优先级越高):
  1. 如果源站响应pragma:no-cache,不缓存。
  2. 如果源站响应cache-control:no-cache(或者no-store,或者max-age=0),不缓存。
  3. CDN控制台设置的缓存过期时间或者状态码过期时间。
  4. 源站响应中使用cache-control设置过期时间,并且cache-control既不等于no-cache,也不等于no-store,取值为max-age,并且max-age大于0,例如:cache-control:max-age=3600。
  5. 源站响应中使用expires设置过期时间,例如:expires:Tue, 25 Nov 2031 17:25:43 GMT
  6. 如果源站响应中携带了ETaglast-modified,则使用以下规则来计算缓存时间:
    1. last-modified,使用公式(当前时间-last_modified)* 0.1,计算结果在10秒~3600秒及之间的,取计算结果时间;小于10秒的,按照10秒处理;大于3600秒的,按照3600秒处理。
    2. 只有ETag,缓存10秒
  7. 如果源站返回的数据中ETaglast-modifiedcache-controlexpires这些缓存相关的响应头都没有携带,则默认不缓存。
说明 ETag表示资源标识。

适用场景

阿里云CDN缓存资源为触发式,当用户发起对某资源的访问请求时,如果响应请求的CDN节点未缓存该资源,则回源站获取资源,成功获取到资源(2xx状态码)后会将资源缓存到CDN节点并返回给用户。

配置缓存过期时间是CDN产品最常用的功能之一,能够在源站未设置缓存规则的情况下,为CDN节点上缓存的静态文件设置合适的缓存时长,避免因为CDN节点上缓存的资源频繁过期而需要频繁回源站获取资源。通过配置缓存过期时间可以提高缓存命中率、降低回源带宽、提高资源加载速度。

注意事项

  • 为了能准确找到更新前和更新后的源站内容,配置静态资源的缓存过期时间之前,建议您源站的内容不使用同名更新,而是以版本号的方式同步,即更新源站内容时采用不同的名称。例如,采用img-v1.0.jpgimg-v2.1.jpg的方式命名。
  • 设置的缓存时间长短会导致回源流量不一样,CDN节点回源获取资源而产生的源站流量费用也有所不同,建议根据不同的业务需求设置缓存时长。设置的缓存时间过短,会导致CDN频繁回源,从而增加源站的流量消耗。
  • 缓存在CDN节点上的资源,由于热度低可能被提前从节点上删除。

操作步骤

  1. 登录CDN控制台
  2. 在左侧导航栏,单击域名管理
  3. 域名管理页面,单击目标域名对应的管理
  4. 在指定域名的左侧导航栏,单击缓存配置
  5. 缓存过期时间页签下,单击添加
  6. 添加缓存过期时间对话框,配置缓存规则。
    缓存过期时间
    参数 说明
    类型 支持目录文件后缀名这两种类型,可根据您的实际需求选择。
    • 目录:指定路径下的缓存资源。
    • 文件后缀名:指定文件类型的缓存资源。
    地址
    • 当类型选择目录时,填写说明如下:
      • 每次只能添加单条目录,可以用正斜线(/)匹配所有目录。
      • 支持输入目录的完整路径,须以正斜线(/)开头,例如/directory/aaa
    • 当类型选择文件后缀名时,填写说明如下:
      • 支持输入一个或多个文件后缀名,多个文件后缀名用英文逗号(,)分隔,例如jpg,txt,大小写敏感,注意区分大小写。
      • 不支持用星号(*)匹配所有的文件类型。
    过期时间 资源对应的缓存过期时间,最长可以设置3年。设置规则如下:
    • 不常更新的静态文件:例如,图片类型、应用下载类型等,建议设置1个月以上。
    • 频繁更新的静态文件:例如,JS、CSS等,根据实际业务情况设置。
    • 动态文件:例如,PHP、JSP、ASP等,建议设置为0s,即不缓存。
    权重 权重即缓存规则的优先级。取值为1~99,数值越大优先级越高。
    说明
    • 建议每条缓存策略都设置不同的权重。类型不同,权重相同的两条缓存策略,文件后缀名优先级高于目录。相同类型和权重的两条缓存策略,生效优先级随机。
    • 如果配置了多条缓存策略,其中一条缓存策略生效后将不再继续匹配其他的缓存策略。
  7. 单击确定,完成配置。

    成功配置缓存过期时间后,您可以在缓存过期时间列表中,根据所需修改删除配置。

配置示例

示例一:设置某个类型的文件不缓存。需要对“.txt”格式的文件不缓存,在CDN控制台增加一条文件名后缀为“.txt”的缓存规则,缓存过期时间设置为“0”。不缓存
示例二:为加速域名example.aliyun.com配置以下缓存策略,用户访问www.example.aliyun.com/directory/aaa/example.png,虽然以下三条规则都匹配到了,但由于目录/directory/aaa权重最大,优先级最高,所以系统最终匹配目录/directory/aaa这条规则,不再匹配其他的缓存策略。缓存策略
示例三:为加速域名demo.aliyun.com配置以下缓存策略,用户访问www.demo.aliyun.com/directory/aaa/example.png,虽然以下两条规则都匹配到了,但由于权重相同,类型不同的两条缓存策略,文件后缀名优先级高于目录,所以系统最终匹配文件名后缀jpg,png这条规则,不再匹配其他的缓存策略。缓存策略2

相关API

BatchSetCdnDomainConfig