阿里云CDN命中率低,如何解决?

发布时间:2019-03-13 07:58:18

问题现象

阿里云CDN控制台上显示的命中率一直不高,需要排查此类为何命中率不高。

源站收到较多来自CDN的回源请求,对源站造成一定的负载压力。


解决方案

阿里云CDN控制台统计的命中率仅仅统计的是CDN L1的命中率,实际情况是L2命中也是从CDN节点拿去数据的,并不会回源,所以真实的CDN命中率是略高于控制台显示的CDN命中率的。(CDN数据流向:客户端->CDN L1层->CDNL2层->源站)

查看用户所提交CDN加速域名的流量情况,加速域名的流量不高的情况下,即便MISS的URL不多,但是对命中率的统计计算是影响很大的。

例如,某CDN加速域名一共对外提供了10个可以访问的URL,其中有一个URL源站上设置了no-cache导致不缓存,其他所有URL访问都命中的情况下,命中率也仅有90%。

CDN加速域名的流量带宽查询可以在控制台获取到:

如果第1和第2都确认OK的情况下,下面有几种可能导致命中率低的情况,请逐一对照排查:

源站上缓存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也会导致不缓存,具体哪几种情况会导致不缓存,可以参考download: 判断CDN不缓存某文件的方法.docx。

控制台设置了不缓存的规则(比如某目录或者某种后缀的文件设置缓存时间为0秒),查询方法可以在CDN控制台查看。

源站动态内容居多,目前CDN主要是加速静态资源(css、js、html、图片、txt、视频等),针对动态资源(php、jsp、包含内部逻辑处理甚至cookie等)基本都是回源。

CDN的访问URL中带有可变参数(举例:http://dccdn.pier39.cn/1.txt?timestamp=14378923](http://dccdn.pier39.cn/1.txt?timestamp=14378923,其中timestamp表示时间戳,每次访问均会不同)。这里CDN针对第一次访问的URL(之前未预热),无论该URL是否符合CDN的缓存规则,第一次访问肯定都是MISS的(因为节点上还没有这个文件),因为后面的参数可变,所以每次访问都是一个全新的URL,则每次都会MISS,从而影响命中率。

刷新操作频繁,有定时刷新的操作,每次刷新都会导致所有已经在CDN上缓存的URL失效,那么下次访问同样的URL,自然就会MISS,从而影响命中率。

文件热度不够,不经常被客户访问到,导致虽然符合上面的所有规则,但是经常有被节点下掉缓存。CDN节点上缓存的文件,可以理解为按照热度属性采取末尾淘汰制,所谓热度就是该文件在该节点上被访问的频率,文件热度不够,其实一定程度上跟这个域名本身的流量不高有关联关系(排查点2)。
关于CDN缓存命中率下降的因素有哪些请查看以下文章

如果您按本文操作没有解决您的问题,请及时联系我方客服,阿里云代理商凯铧互联专业技术团队为您提供全面便捷专业的7x24技术服务。 凯铧互联官网:www.bjkaihua.com;阿里云业务网址:www.alibjyun.com;腾讯云业务网站:www.bjkaihua.net.cn。 

为什么选择我们:北京凯铧互联科技有限公司(简称凯铧互联)由多名前阿里云资深技术专家创立,核心员工来自阿里巴巴、腾讯等,作为阿里云,腾讯云百度云,金山云,华为云重要的合作伙伴,专注于为企业用户提供云计算及云计算的解决方案。总部设在北京,并在内蒙设有办事处。做为一家综合性方案商,凯铧互联向各行业用户提供基于云计算的各种解决方案。为用户获得优质服务的同时,秉承"专业规划、周到服务"的服务理念,根据用户的实际情况,充分考虑各种网络资源的特点及功效,为用户量身定做一套适合于其实际应用需求的网络应用方案。帮助用户利用互联网的力量展开新的营销方式,并大大缩短了项目实施周期,获得用户的一致好评。