导语:如果觉得网站访问速度过慢,我们可以用多种方法来对网站进行优化,比如压缩JS、CSS、HTML等静态资源,对图片图片类文件进行分布式对象存储,或者整站进行CDN加速。本文就介绍一下CDN的思路和原理。
CDN加速的原理
CDN的原理就是把源站的资源放在镜像站上,然后不同的用户访问时,首先访问的是离自己较近的镜像站,从而获得较好的访问速度。
CDN加速的方法
CDN的实现方法很简单,可以自己搭建CDN服务器或使用一些公司提供的CDN服务,例如百度云、阿里云、腾讯云等公司的CDN服务。具体怎么购买叶子在这里就不一一介绍的,所有公司的产品都大同小异。
为了方便快捷的实现CDN加速,我们一般使用CNAME域名的方式,原理如下。
- 在CDN提供商那里申请一个CNAME的域名,将这个域名解析到你的网站IP上。
- 将你原来的域名A解析记录删除,重新添加一条CNAME方式的解析记录,将域名直接指向IP的方式,改为指向CDN提供商提供的CNAME的域名上。
总的来说,就是给你的域名解析增加了一个中间环节,原来是直接指向IP,现在是先指向CNAME域名,然后由CNAME域名指向IP。
但是,这样做的方式,会增加域名解析的响应时间,有利有弊,请自行衡量。
CDN加速的问题
前一段时间,有位同学使用了腾讯云的CDN服务,造成了他的网站负载为100%,CPU使用率一直在100%,经过排查,他将资源的刷新时间设为5分钟导致了此问题。
一般来说,CDN在加载源站资料的时候,会整站加载,那么5分钟是不可能把所有的资源都镜像过去的,这就导致了上一次的请求还没有完成,下一次又来了,以致源站服务器始终在处理CDN服务器的请求,不但没有起到减轻负责的作用,还导致的源站的负载增加。
我们在设置CDN的刷新时间时,根据自己的更新频率,一般设为12小时以上。另外对于图片类的资源,我们可以设置为30天刷新一次。
后来,他将CDN关闭后,服务器恢复正常。从此留下阴影,不敢使用。
CDN加速的吐槽
在使用百度、腾讯的CDN的时候,常常页面会出现源站无法连接的错误,叶子其实有点纳闷,既然是CDN已经把源站的数据加载到自己的服务器了,当用户访问时,直接从自己的服务器读取就好,还访问什么源站。
比如前面那个同学,源站出了问题没有办法访问,CDN也提示源站无法连接,差点让他抓狂。
结束
说了一下CDN的问题,可能有些描述不太准确,都是自己的理解。请大家指正。
从此留下阴影,不敢使用!我的服务器被ddos过,正考虑要不要cdn