CDN(content delivery network),也就是内容分发网络,构建在网络上的一种流量分配网络。目的是将静态资源发布到用户网络的"边缘",使用户可以就近的取得所需的内容。 CDN= 镜像(mirror)+缓存(cache)+整体负载均衡(GSLB)。
CDN结点存储的是网站中的静态数据资源,如css,js,图片静态页面等。当从主站请求动态内容后,在从CDN上下载这些静态数据,从而加速网页数据内容。
CND请求数据流程:

具体流程如下:
1、client端请求logo.png 在 images.mydomain.com
2、DNS发现CNAME,回将请求发转给给CDN服务器
3、如果logo.png在CDN上失效了,那么会回源到源服务器去取
4、如果logo.png在CDN上没有失效,则向客户端返回logo.png
CDN动态加速
CDN动态加速技术,是指在CDN的DNS解析中通过动态的链路探测来寻找回源最好的一条路径。将所有的请求调用选定到这条路径上回源,从而加速用户访问的效率。
CDN好坏主要看命中率和回源算法是否高效。举个例子,比如我有一个图片,这个图片源服务器发送到CDN结点,文件在CDN的超时过期了,那么就要回源(回到源服务器)去拉取数据,在放到CDN中。这个算法就很重要了。因为CDN部署遍布全国,用户接入一个CDN结点后,选择什么路径最快,是要有算法做支持的。
CDN 命中率如果较低的原因是什么?
- 源站动态资源较多,多为不可缓存的内容,也会导致频繁回源拉取。
- 资源访问量较低,文件热度不够,CDN 收到请求较少无法有效命中缓存。
- 缓存配置不合理,缓存时间过短,CDN 节点频繁回源。
- 访问资源的 URL 带参数,并且参数不断变化,当用不同的 URL 去访问 CDN 的时候,CDN 会认为这是一个新请求(即便这两个不同的 URL 其实是访问到了同一个文件,并且该文件已经缓存在节点上),会回源去拉取所请求的内容。
CDN 什么情况下会回源拉取资源?
- 用户访问时,如节点上无缓存,则会回源拉取资源
- CDN 节点上的文件超时过期,会回源拉取资源
- 若为不缓存文件,用户访问时,会直接回源
- 未忽略 URL 参数域名,使用该形式域名带参数访问资源,会直接回源