信息化技术的发展可谓日新月异,一段时间不学习就可能会落后于时代。前段时间在看一篇技术文档的时候就有一个“CDN命中率”的概念,有点明白,但又是似懂非懂的感觉,索性沉下心来,一步步慢慢学,学得仔细一点。
什么是CDN?CDN全称为“内容分发网络”,鉴于中国网络环境的复杂性,使用CDN可以屏蔽网络访问中可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。避开网络连接时间等因素,CDN命中率就成了评价一个CDN设置好坏的关键因素。
使用 CDN 主要目的其实就是为了提高网站访问速度,让每个用户在访问站点的时候自动调用离用户最近的 CDN 节点上缓存来实现加速访问,那么 CDN 节点上缓存的内容越多回源请求就越少,用户的浏览时调取网站资源效率也就越高效,表现到前端就是访问速度的提升了,对服务器负载来说也是一种“减负”,常见的一般使用 CDN 都建议大家将静态文件(比如:JS/CSS/图片)缓存到 CDN 来加快站点的载入。
CDN命中率是指用户访问的时候,命中缓存的概率。用户访问一个使用了CDN的网站,请求会被解析到CDN节点。此时如果该CDN节点上已经缓存了用户要请求的内容,则由该节点直接返回,无需再去源站取数据,这样就算命中缓存。如果该CDN节点上没有缓存相应的内容,则会立即去源站获取,然后再返回给访问者,同时把内容缓存在该节点上(这样就没有命中缓存)。
CDN命中率又细分为CDN请求命中率和CDN字节命中率。CDN请求命中率是指一个时间段内所有请求命中缓存的概率。字节命中率是指一个时间请求的字节数命中缓存的概率。
一般一个充分优化设置的CDN,命中率能达到50-100%。影响CDN命中率的因素很多,主要看网站的类型。如果一个纯静态的网站,缓存命中率会在90%以上。如果是动态内容的网站,因为只有图片、js、css等内容能够缓存,此时命中率就会略低。
================================================
CDN 在静态资源的加速场景中是将静态资源缓存在距离客户端较近的 CDN 节点上,然后客户端访问该资源即可通过较短的链路直接从缓存中获取资源,而避免再通过较长的链路回源获取静态资源。因此 CDN的缓存命中率的高低直接影响客户体验,而保证较高的命中率也成为了站长的核心命题。在本文中我们就一起探讨 CDN 缓存命中率的概念、影响因素以及优化策略。
CDN 的缓存命中率包括两种:字节缓存命中率和请求缓存命中率。其中字节缓存命中率是指 CDN 缓存命中 Response 的字节数除以 CDN所有请求 Response 的字节数。而请求缓存命中率是指 CDN 缓存命中的请求的个数除以 CDN 所有的请求数。
字节缓存命中率可以表征回源流量的大小,回源流量越高那么源站的流出流量也就越大,这样对于源站的带宽资源以及其他的负载都会越大,因此回源流量代表了源站服务器接收到的负载压力。而我们在业务使用中也主要关心字节缓存命中率。
================================================
简单地说,CDN命中率是指用户访问的时候,命中缓存的概率。
用户访问一个使用了CDN的域名,请求会被解析到CDN节点。此时:
如果该CDN节点上如果已经缓存了用户要请求的内容,则直接返回。(这样就算命中缓存)
如果该CDN节点上没有缓存相应的内容,则会立即去源站获取,然后再返回给访问者,同时把内容缓存在该节点上。(这样就没有命中缓存)