为什么网站使用CDN后,访问速度却更慢了

CDN全称是Content Distribution/Delivery Network,中文名叫内容分发网络。随着“云”概念的普及,以及各大云厂商的推广,越来越多的网站主、开发者用上了CDN。而使用CDN的目的主要有两点:一、优化网站访问速度。二、提高网站对抗恶意攻击的能力。这期主要针对第一点的几个问题简单说说。

先来说说CDN为什么能加速网站访问,其基本原理是什么?

通常一个CDN产品有非常多的PoPs(边缘节点),而这些节点一般都是分布在各大洲、以及各大洲的热门地区,一般来说访客会被匹配到物理距离最近的节点。假设你的站点在美国洛杉矶且使用了CDN,一位来自东京的访客访问你的站点,那么他大概率会被匹配到东京的CDN边缘节点,然后该边缘节点将会从你的源站(洛杉矶)获取资源,之后再转发给访客。一般来说,如果规则设置恰当,东京节点在获取js、css、jpg等静态资源之后会将其缓存到边缘节点中,下次访客再访问同样资源,CDN节点则无需再从洛杉矶获取,而是可以直接从东京的边缘节点的存储中获取并分发,这样你的网站速度就加快了。

但为什么用了CDN后,感觉网站速度更慢了呢?

这种情况通常是因为缓存命中率(Cache Hit Ratio)太低,也就是网站大部分内容静态资源都没有被缓存到CDN边缘节点。因而访客每次访问网站,CDN节点都需要从源站获取,然后再转发给你,这种情况可能导致使用CDN后网站速度更慢。

而CDN缓存节点,一般来说都是单点缓存。比如说东京边缘节点缓存后,新加坡节点、美国节点、欧洲节点并不会同步缓存,从某种意义上来说这些CDN缓存节点是相对独立的,如果要做到全球缓存,一般情况下需要全球用户访问才能触发缓存。


Cloudflare CDN全球CDN节点


阿里云CDN节点分布

同样是使用了CDN,为什么腾讯、网易这类大公司的网站很快,而自己的网站速度却不理想?

因为这些大公司的用户基数够大,因而各大CDN节点的缓存命中率极高,访问速度自然而然就快了。但是如果你的网站访问量并不是很大,那么缓存命中率可能较低,这也就导致网站访问速度可能不太理想。

个人网站/小网站该怎么优化速度?

1.也许你并不需要那么多CDN节点,精简CDN边缘节点或者直接去除CDN。

2.可以考虑把静态资源和动态资源用两个域名分离开,静态资源放对象存储。

3.使用某些工具或者产品提升CDN边缘节点的缓存命中率。

THE END