• 首页 > 
  • CDN缓存命中率较低

CDN缓存命中率较低

KB: 63874

 · 

更新时间:2020-04-14 09:56

概述

CDN控制台上显示的缓存命中率一直不高,且源站收到较多来自CDN的回源请求,对源站造成一定的负载压力。现需要排查缓存命中率不高的原因。

详细信息

参考以下步骤,排查缓存命中率不高的原因。

  1. CDN控制台统计的缓存命中率仅仅是CDN L1层的命中率,实际情况L2层的缓存数据也是从CDN节点获取,并不会从源站获取数据,所以真实的CDN命中率是略高于CDN控制台显示的命中率。
    说明:CDN数据流向为客户端>CDN的1级节点>CDN的2级节点>源站。
  2. 查看用户提交的CDN加速域名流量情况,在加速域名流量不高的情况下,即便MISS状态的URL不多,但是对命中率的统计计算影响很大。例如,某CDN加速域名一共对外提供了10个可以访问的URL,其中有一个URL源站上设置了no-cache,导致不缓存,在其他URL访问都命中的情况下,命中率也仅有90%。
    说明:CDN加速域名的流量带宽可以在CDN控制台获取。
  3. 在之前检查正常的情况下,有如下几种可能导致命中率低的情况,请逐一进行排查:
    1. 源站上缓存Header设置不当,或者缺少必要的Header,如果CDN的缓存规则是不缓存,那么每次访问都是MISS状态,影响命中率:
      • 缓存Header设置不当,主要是Cache-Control或者Pragma配置,即源站上设置了Cache-Control为no-cache、no-store、max-age=0、private,或者Pragma设置为no-cache等情况下,均会被CDN当做最高优先级执行不缓存操作。
      • 缺少必要的Header,指源站的Response头部信息中不包含Etag和Last-modified,这种情况也会导致不进行缓存。
    2. CDN控制台设置了不缓存的规则,即某目录或者某种后缀的文件设置的缓存时间为0秒,相关信息可以在CDN控制台查看。
    3. 源站动态内容较多,目前CDN主要是加速静态资源,例如CSS、JS、HTML、图片、txt、视频等资源,针对动态资源PHP、JSP、包含内部逻辑处理甚至Cookie等资源都会回源数据。
    4. CDN的加速URL中带有可变参数。例如URL地址为http://XXX.XXX.cn/1.txt?timestamp=14378923,其中timestamp值为时间戳,每次访问此值均不同。CDN针对第一次访问的URL,即之前未预热的URL,无论该URL是否符合CDN的缓存规则,由于节点上还没有这个文件,第一次访问肯定都是MISS状态。但是timestamp参数会变化,所以每次访问都是一个全新的URL,则每次都返回MISS状态,从而影响命中率。
    5. 刷新操作频繁。CDN控制台有定时刷新功能,每次刷新都会导致所有已经在CDN上缓存的URL失效,所以在刷新之后访问同样的URL时,就是MISS状态,从而影响命中率。
    6. 文件热度不够。不经常被用户访问到的URL,即使符合所有缓存规则,但是经常有被节点去除缓存的风险。CDN节点上缓存的文件,可以理解为按照热度属性采取末尾淘汰制,热度就是该文件在该节点上被访问的频率,文件热度不够,其实一定程度上跟这个域名本身的流量不高有关系,即第2步的原因。

相关文档

CDN缓存相关文档如下。

适用于

  • CDN