缓存过期配置

最近更新时间:2019-05-08 11:57:41

什么是缓存过期配置

  • 缓存过期配置是指配置 CDN 加速节点在缓存您的业务内容时,遵循的一套过期规则。CDN 节点上缓存的用户资源都面临“过期”问题。
    • 若资源处于未过期状态,用户请求到达节点后,节点会将此资源直接返回给用户,提升获取速度。
    • 若资源处于过期状态(即超过了设置的有效时间),用户请求会由节点发送至源站,重新获取内容并缓存至节点,同时返回给用户。
  • 腾讯云 CDN 支持各维度的内容缓存时间设置、自定义优先级调整、cache 继承策略(高级缓存配置)、404状态码缓存过期时间设置及 HTTP Response header 缓存策略配置。合理的配置缓存时间,能够有效的提升命中率,降低回源率,节省您的带宽。

说明:

CDN 的缓存在节点存储资源优先的情况下,有可能由于访问量太少以及资源过冷而提前被剔除掉。

内容缓存

配置指引

  1. 登录 CDN 控制台,单击左侧菜单栏的【域名管理】,单击您所要编辑的域名右侧的【管理】。
  2. 单击【缓存配置】,您可以看到 缓存过期配置 模块:
  3. 在域名接入时,默认配置如下:
    • 自有源域名接入:除常规动态文件(如 .php .jsp .asp .aspx)默认缓存过期时间为0,对此类动态文件请求会直接回源外,其他所有文件默认30天缓存过期时间。
    • COS 源域名接入:所有文件默认30天缓存过期时间。
    • 默认关闭高级缓存过期设置。

修改配置

单击【新增缓存配置】可以添加缓存配置,您可以根据自身业务需求,在默认配置上添加缓存时间配置,CDN 支持以下几种方式的缓存过期时间设置:

  • 按文件类型设置缓存过期时间。
    您可以填充文件类型后缀,根据类型来设置缓存时间,如下所示:

    配置缓存时间时可填入多项,每项用;隔开,内容区分大小写,必须是以.开头的文件后缀,如.png。刷新时间设置为0时,不缓存,所有请求转发至用户源站;缓存时间设置最大值不能超过365天。
  • 按文件夹设置缓存过期时间。
    您可以填充文件夹路径,根据文件夹来设置缓存时间,如下所示:

    配置缓存时间时可填入多项,每项用;隔开,内容区分大小写,必须是以/开头的文件夹。刷新时间设置为0时,不缓存,所有请求转发至用户源站;缓存时间设置最大值不能超过365天。
  • 全路径文件设置缓存过期时间。
    您可以为某一具体文件设置缓存时间,如下所示:

    配置缓存时间时可填入多项,每项用;隔开,内容区分大小写,支持*匹配某一类型文件,如/test/abc/*.jpg
    • 首页设置缓存过期时间。
      您可以指定首页设置缓存时间,如下所示:

优先级

  1. 当设置了多条缓存策略时,相互之间会有重复。

    注意:

    配置项列表底部优先级高于顶部优先级。

    假设某域名配置了如下缓存配置:

    • 所有文件30天
    • .php .jsp .aspx 0秒
    • .jpg .png .gif 300秒
    • /test/*.jpg 400秒
    • /test/abc.jpg 200秒
  2. 假设域名为www.test.com,资源为www.test.com/test/abc.jpg,其匹配方式如下:

    • 匹配第一条所有文件,命中,此时缓存时间为30天。
    • 匹配第二条,未命中。
    • 匹配第三条,命中,此时缓存时间为300秒。
    • 匹配第四条,命中,此时缓存时间为400秒。
    • 匹配第五条,命中,此时缓存时间为200秒。

因此最终缓存时间为200秒,以最后一次匹配生效。

  1. 单击【调整优先级】可以添加缓存配置,您可以根据业务情况自定义调整已经添加的缓存过期配置顺序。
  2. 使用右侧上下箭头调整缓存过期时间配置的顺序,单击【保存】即可完成调整。

缓存继承

当用户请求您某一业务资源时,源站对应的 Response HTTP Header 中存在 Cache - Control 字段,此时默认策略如下:

  • Cache - Control 字段为 max - age,对该资源的缓存时间以配置的缓存时间为主,不继承 max - age 指定时间。
  • Cache - Control 字段为 no - cache 或者 no - store,此时 CDN 节点对此资源不做缓存。
  • 无 Cache - Control 字段,CDN 会默认添加:Cache - Control: max - age = 600头部。

高级缓存配置

  1. 在缓存过期配置模块中可以找到 高级缓存过期设置 开关,单击即可打开。
  2. 开启了高级缓存过期设置开关后,用户请求源站某资源时 Response HTTP Header 中带有 Cache - Control 字段,且值为max - age = xxxx,此时节点对该资源的缓存时间取配置的过期时间与 max - age 中的最小值:
    • 用户源站配置/index.html的 max - age 为200秒,CDN 对应配置的缓存时间为600秒,则文件实际过期时间为200秒。
    • 用户源站配置/index.html的 max - age 为800秒,CDN对应的缓存时间为600秒,则文件实际过期时间为600秒。
  3. 开启了高级缓存过期设置开关后,若源站没有返回 Last-Modified 字段时,CDN 会默认添加 Last-Modified 字段,每10分钟变一次。

头部缓存

当资源在节点命中缓存时,CDN 默认会缓存以下来自于源站头部,并返回给用户。

  • Access - Control - Allow - Origin
  • Timing - Allow - Origin
  • Content - Disposition
  • Accept - Ranges

您可以前往【域名管理】中【缓存配置】模块,手动开启【缓存源站所有头部】功能,CDN 将缓存所有源站返回头部信息。

状态码缓存

  1. 节点请求源站资源时,除上述缓存策略外,还会根据状态码按照如下默认缓存策略进行:
    • 200/206:按照正常缓存策略进行。
    • 3XX:默认不缓存。
    • 4XX:404缓存10s,其他默认不缓存。
    • 5XX:默认不缓存。
  2. 您可以在【缓存配置】中【状态码缓存】模块调整404缓存时间:

    404状态码缓存时间可调整至0 - 3600秒。

    注意:

    若文件对应的缓存过期时间为0,产生404后,仍遵循不缓存原则,直接透传。