您可以针对静态资源配置指定目录和文件后缀名的缓存过期时间,资源过期后会自动从CDN节点删除,您向CDN节点发起的访问请求会被判定为无效,请求会回源站获取最新资源并缓存到CDN节点。本文介绍资源在CDN上的缓存策略及配置缓存过期时间的方法。

背景信息

CDN节点上资源的缓存策略如下图所示:缓存策略
  • 如果您的源站和CDN控制台上均没有配置缓存策略,此时将遵循阿里云CDN的默认缓存规则。CDN的默认缓存时间最短为10秒,最长为3600秒,您可以在CDN控制台修改默认缓存时间。设置的缓存时间长短会导致回源流量不一样,回源费用也有所不同,建议根据不同的业务需求设置缓存时长。设置的缓存时间过短,会导致CDN频繁回源,从而增加源站的流量消耗。
  • Cache的默认缓存策略用于配置文件过期时间,此配置的优先级高于源站配置。如果源站未配置Cache,则支持按完整目录或文件后缀名两种方式设置。
  • 在CDN节点上缓存的资源,可能由于热度较低而被提前从节点删除。
  • 源站响应CDN节点的内容里如果携带了etag信息,且客户端请求中有携带if-match信息的情况下,如果if-match值=etag值,CDN节点会将缓存的内容直接响应给客户端;如果if-match值≠etag值,CDN节点会先回源站获取最新的内容,再将最新内容响应给客户端,同时在CDN节点上用最新的内容替代原先旧的内容。即客户端请求中的if-match信息与缓存文件中的etag信息的校验优先级高于CDN节点上配置的缓存规则。

适用场景

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

使用CDN加速资源后,如果存在源站资源发生变化而CDN节点仍缓存的是旧资源返回给用户,或资源加载慢等情况,您可以根据所需,配置缓存过期时间。当您请求到的缓存资源过期后,请求会回源站获取最新的资源。对于不常更新的静态资源,建议设置较长的缓存过期时间,尽可能让访问命中CDN节点,已达到更优的加速效果。

操作步骤

为了您能准确找到更新前和更新后的源站内容,配置静态资源的缓存过期时间之前,建议您源站的内容不使用同名更新,而是以版本号的方式同步,即更新源站内容时采用不同的名称,例如采用img-v1.0.jpgimg-v2.1.jpg的方式命名。

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

    成功配置缓存过期时间后,您可以在缓存过期时间列表中,对当前的配置进行修改删除操作。

配置示例

为加速域名example.aliyun.com配置三条缓存策略,缓存策略1优先生效,缓存策略1生效后将不再继续匹配其他的缓存策略。
  • 缓存策略1:文件后缀名为JPG和PNG的所有资源过期时间设置为1个月,权重设置为90。
  • 缓存策略2:目录为/www/dir/aaa的过期时间设置为1个小时,权重设置为70。
  • 缓存策略3:完整路径为/www/dir/aaa/example.php的过期时间设置为0s,权重设置为80。

相关API

BatchSetCdnDomainConfig