缓存配置问题

最近更新时间:2019-04-29 15:31:25

什么是缓存过期配置?

缓存过期配置是指配置 CDN 加速节点在缓存您的业务内容时遵循的一套过期规则。
CDN 节点上缓存的用户资源都面临“过期”问题。若资源处于未过期状态,当用户请求到达节点后,节点会将此资源直接返回给用户,提升获取速度;当资源处于过期状态(即超过了设置的有效时间),此时用户请求会由节点发送至源站,重新获取内容并缓存至节点,同时返回给用户。合理地配置缓存时间,能够有效的提升命中率,降低回源率,节省您的带宽。

什么是高级缓存配置?

  1. 登录 CDN 控制台,在左侧菜单中,单击【域名管理】,进入管理页面。
  2. 找到您所要编辑的域名所在行,单击操作栏中的【管理】。
  3. 在缓存过期配置模块中可以找到 高级缓存过期设置 开关,单击即可打开。
  4. 当您开启了高级缓存过期设置开关后,会达到如下效果。
    用户请求源站某资源时 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 秒。

      注意:

      若您的源站 Response Header 中无 Cache-Control 字段,则 CDN 会默认添加:Cache-Control: max-age=600 头部。

如何控制文件在浏览器的缓存时间?

腾讯云 CDN 默认支持源站的 Cache-Control 设置。目前暂不支持配置 Cache-Control 头部,因此无法在 CDN 节点上配置 max-age,但 CDN 节点会继承源站的 max-age,因此只需要在源站的服务器上配好即可。

如何调整缓存配置的优先级?

请参阅 优先级调整 文档中的操作说明。

CDN 自有源可以设置不缓存某种文件吗?缓存时间设置成0,是否就是不缓存?

您可以按照目录和文件类型设置对应的缓存时间。若缓存时间设置为0,即 CDN 节点不缓存该资源,用户每次发送访问请求至 CDN 节点时,CDN 节点都需回源站拉取相应资源。相关缓存设置可参照 缓存过期配置

腾讯云支持哪些缓存过期配置?

腾讯云 CDN 支持各维度的缓存时间设置、支持自定义优先级调整、支持 cache 继承策略(高级缓存配置)。合理的配置缓存时间,能够有效的提升命中率,降低回源率,节省您的带宽。

CDN 默认的缓存配置是什么?

在域名接入时,默认配置如下:

  • 自有源域名接入:所有文件默认30天缓存过期时间,常规动态文件(如.php .jsp .asp .aspx)默认缓存过期时间为 0,对此类动态文件请求会直接回源。
  • COS 源域名接入:所有文件默认30天缓存过期时间。
  • 默认关闭高级缓存过期设置。

缓存继承的策略是什么?

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

  • Cache-Control 字段为 max-age,对该资源的缓存时间以配置的缓存时间为主,不继承 max-age 指定时间。
  • Cache-Control 字段为 no-cache 或者 no-store,此时 CDN 节点对此资源不做缓存。

缓存的匹配方式是什么?

当设置了多条缓存策略时,相互之间会有重复,配置项列表底部优先级高于顶部优先级。假设某域名配置了如下缓存配置:

所有文件30天
.php .jsp .aspx 0秒
.jpg .png .gif 300秒
/test/*.jpg 400秒
/test/abc.jpg 200秒

假设域名为 www.test.com,资源为 www.test.com/test/abc.jpg,其匹配方式如下:

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

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