如果CDN缓存命中率低,则会导致源站压力大,静态资源访问效率低。您可以针对导致CDN缓存命中率低的具体原因,选择对应的优化策略,来提高CDN的缓存命中率。

CDN在静态资源加速场景的应用,是将静态资源缓存在距离客户端最近的CDN节点上。您的客户端访问该资源时,直接从缓存中获取资源,避免通过较长的链路回源。因此,CDN缓存命中率的高低直接影响用户体验,而保证较高的缓存命中率也成为了CDN的核心课题。

CDN缓存命中率包括字节缓存命中率和请求缓存命中率。
  • 字节缓存命中率 = CDN缓存命中响应的字节数 / CDN所有请求响应的字节数
    说明 字节缓存命中率越低,回源流量越大,源站的流出流量越大,源站的带宽资源以及其他的负载越大,因此回源流量代表了源站服务器接收到的负载压力,在业务使用中主要关心字节缓存命中率。
  • 请求缓存命中率 = CDN缓存命中的请求数 / CDN所有的请求数

查看CDN缓存命中率

查看CDN缓存命中率的方式如下:
  • 控制台
    CDN控制台提供的缓存命中率监控是字节缓存命中率,控制台资源监控中命中率的详情如下图所示。质量监控
  • 日志
    在CDN的请求日志中,CDN记录了所有的CDN请求的缓存命中状态,详细的日志格式请参见日志下载。其中,cache命中状态字段HIT表示命中,MISS表示未命中。日志示例如下。
    26/Jun/2019:10:38:19 +0800] 192.168.53.146 - 1542 "-" "GET http://www.aliyun.com/index.html" 200 191 2830 MISS "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "text/html"
    说明 命中状态仅表示CDN L1节点的命中状态。例如:CDN L1节点未命中缓存,L2节点命中缓存,日志中仍然显示MISS。
  • API

    调用接口DescribeDomainHitRateData,查询CDN的字节缓存命中率;调用接口DescribeDomainReqHitRateData,查询CDN的请求缓存命中率。

优化CDN缓存命中率

CDN缓存命中率的影响因素和优化策略如下表所示。

优化策略 影响因素
预热URL
  • 当业务高峰期时,源站压力大,导致CDN缓存命中率低。
  • 当CDN加速域名流量较低时,可能提前从CDN节点的缓存中清除,导致CDN缓存命中率低。
配置资源缓存规则 当静态资源未返回响应头EtagLast-modified时,缓存失败,导致CDN缓存命中率低。
过滤URL中可变参数 当URL请求中带有queryString或其他可变参数时,资源重新回源会导致CDN缓存命中率降低。