现在的位置: 网页制作教程网站优化 >正文
seo教程

阿里云CDN缓存命中率不高的分析和解决办法

发表于2020/4/25 网站优化 0条评论 ⁄ 热度 815℃

网站使用了阿里云的CDN,开启了一段时间后,发现访问效果并没有太大的改善。查询后,发现资源的命中率hit不高,相反miss的很多。

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

下面我们就阿里云CDN缓存命中率不高的问题具体分析和提出解决办法。

阿里云 CDN命中率低解决方案

1.控制台上统计的命中率仅仅是统计的CDN L1的命中率,实际情况中是L2命中也是从阿里云CDN节点拿去数据的,并不会回源,因此真实的CDN命中率是要比控制台上显示的要略高

2.查看用户所提交的CDN加速域名的流量情况,加速域名的流量不高的情况之下,就算是MISS的URL并不多,但是对于命中率的计算产生的影响还是非常大的。

例:某一个阿里云CDN加速的域名一同对外提供了10个可以访问的URL,这其中有一个URL源站商设置了no-cache导致不会缓存,这种情况之下就算是其它所有URL访问都命中,命中率也仅仅只有90%。

3.假如第1和第二都确认OK的情况之下,下面有几种可能导致命中率低的情况,请您按照下文进行逐一对照排查:

(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)控制台设置了不缓存的规则(比如某目录或者某种后缀的文件设置缓存时间为0秒),查询方法可以在CDN控制台查看也可以联系客服请求技术服务远程协助。

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

(4)CDN的访问URL中带有可变参数,无论该URL是否符合CDN的缓存规则,因为后面的参数可变,所以每次访问都是一个全新的URL,则每次都会MISS,从而影响命中率。

(5)进行刷新操作频繁,有定时刷新操作,每一次刷新之后就会导致所有已经在CDN上缓存的URL实效,这样下一次访问同样的URL,自然就会MISS,这就造成命中率下降。

(6)文件的热度不够,不是那种经常被客户访问到,导致虽然符合上面的所有规则,但是经常有被节点下掉缓存。CDN节点上缓存的文件,可以理解为按照热度属性采取末尾淘汰制,这其中访问热度就是文件在这个节点上被访问的频率,文件热度在一定程度上就是域名本身的流量不高造成的。

如果您也发现CDN的资源命中率hit不高,也按照上面的方法做下排查吧。

  • 暂无评论