如何排查CDN缓存命中率较低的问题? 您所在的位置:网站首页 cdn加速具体路径有哪些方法 如何排查CDN缓存命中率较低的问题?

如何排查CDN缓存命中率较低的问题?

2024-07-07 23:01| 来源: 网络整理| 查看: 265

检查是否开启强制Range回源,详情请参见配置Range回源。此功能开启后,所有回源请求将按照设定的Range size切片回源。 Range的功能也有两面性,对于源站是大文件(超过50 MB) 的场景,Range分片可以有效的降低大文件下载时遇到的网络拥塞,以及源站为窄带的情况。但如果源站的文件平均size相对较小,比如在10M以内的文件,开启强制Range回源没有优化效果,反而降低回源的效率,扩大回源,使命中率降低。

检查CDN的加速URL中是否带有可变参数。当您的业务经常使用uri带有变量,并且不同用户请求都有不同的parameter变量时,CDN会按照URL hash后的值存储,每一条不同的uri都会触发回源,CDN就变成透传的组件失去了缓存的意义。遇到这种情况,建议可以开启CDN忽略参数功能,将uri、"?"以后的资源去掉后再进行CDN缓存,详情请参见忽略参数。

但如果源站或者用户对"?"后的参数强依赖,建议切换到全站加速(DCDN)产品,通过智能选路回源更灵活,CDN是固定边缘节点、中心节点双层回源,对于强依赖"?"变量的访问效果略低于全站加速(DCDN),智能选路是动态的网络质量检测规划回源路径,可能是边缘节点直接回源,也可以是边缘节点回到中心节点再回源。

说明

例如URL地址为http://example.aliyundoc.com/1.txt?timestamp=14378923,其中timestamp值为时间戳,每次访问此值均不同。CDN针对第一次访问的URL,即之前未预热的URL,无论该URL是否符合CDN的缓存规则,由于节点上还没有这个文件,第一次访问肯定都是MISS状态。但是timestamp参数会变化,所以每次访问都是一个全新的URL,则每次都返回MISS状态,从而影响命中率。

检查源站是否开启多副本缓存。多副本缓存是服务端(源站) 针对用户请求带有不同Accept-Encoding头,源站能响应不同的Vary头,且CDN会按照不同的Vary头进行缓存。带有不同Vary头的请求会增加回源的次数,导致命中率降低。

检查缓存配置是否合理。源站上缓存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,这种情况也会导致不进行缓存。

源是否设置过缓存头,CDN默认按照源站的缓存头优先级缓存,如果源站设置了不合理的缓存头,比如max-age=0,则覆盖CDN的缓存。

检查CDN控制台是否设置了不缓存的规则,即某目录或者某种后缀的文件设置的缓存时间为0秒。

检查源站动态内容是否较多,目前CDN主要是加速静态资源,例如CSS、JS、HTML、图片、TXT、视频等资源,针对动态资源PHP、JSP、包含内部逻辑处理甚至Cookie等资源都会回源数据。

刷新操作频繁。CDN控制台有刷新缓存功能,每次刷新都会导致所有已经在CDN上缓存的URL失效,所以在刷新之后访问同样的URL时,就是MISS状态,从而影响命中率。

文件热度不够。不经常被用户访问到的URL,即使符合所有缓存规则,但是经常有被节点去除缓存的风险。CDN节点上缓存的文件,可以理解为按照热度属性采取末尾淘汰制,热度就是该文件在该节点上被访问的频率,文件热度不够,其实一定程度上跟这个域名本身的流量不高有关系。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有