什么是CDN?CDN能给我们带来什么?

为什么需要CDN?

用户可能在全世界的任何一个角度,用户终端与服务器之间的物理距离越长,经过的网络节点越多,那么网络请求时间就会越长。甚至节点之间可能发生阻塞或者丢包等状况。比如打开一个页面超过3S,用户往往会选择关闭页面。

如何解决远距离用户的网页卡顿?

直接的思路自己部署多个服务器到世界各地,但是每个服务器网点都需要投入人力物力财力来维护。开销很大。
根据有需求就有供应,有厂商就会专门做这块。这些厂商在世界各地搭建服务器为你服务,这些服务器形成了一个网络,叫做内容分发网络(CDN,content delivery network)。cdn中的边缘服务器负责给就近的用户分发服务器内容。

网页中有许多内容,cdn负责分发哪部分内容?

网页可以分为静态内容和动态内容。

什么是静态内容:
就是网页中长期不变的东西,比如网页中的图片和图标。

什么是动态内容:
就是需要经常改变的,比如微博中的点赞量。

需要注意的是,静态资源也不是都放在CDN中,源服务器发送文件给CDN的时候就可以利用HTTP头部的cache-control设置文件的缓存形式。哪些CDN可以保存,哪些不能,哪些可以保存多久。
在这里插入图片描述

一开始的时候CDN没有网站的内容,需要源服务器先把网站内容发给(push)CDN
在这里插入图片描述
如果一开始没有push给CDN,用户访问网页的时候,CDN就会去源服务器pull资源。拿到资源后进行备份,之后其他用户发出请求,cdn就会马上返回内容。

在这里插入图片描述

以上是静态内容,那么动态内容如何处理?

动态内容是根据每个用户变化,或者不同时间段进行变化的。因此源服务器很难做到提前预测每个用户的动态内容然后提前给到CDN。所以用户每次向CDN请求动态内容,CDN又去请求源服务器这样更耗时,就没有存在的意义了。所以动态内容好像没有必要让CDN提供了。

但是有些动态内容还是有意义的,比如时间,前端的js是单线程运行的,用户在进行标签页切换或者其他耗时操作的时候,可能导致时间与服务器不同步,一些操作前端需要请求后端时间来保持时间尽量同步,如果此时网络不稳定,时间就没办法同步了。因此有些CDN提供接口,让源服务器用这些CDN接口,而不是源服务器自己的代码,这样用户就可以直接从CDN上获取时间,而不是从源服务器上获取了。当然动态内容还有很多方法和很多问题。

CDN还提供了一定的安全保障

但是CDN的存在还是给源服务器增强了一道墙,用户需要通过CDN来获取资源,而不是直接请求源服务器,这样降低了请求的压力还是保证了资源的时效性,还不用担心恶意的DDOS攻击。

CDN不怕ddos攻击吗?
云服务商们在世界各地部署了大量的服务器,然后监控CDN服务器的负载情况,如果某个服务器超载,就会把用户请求转移到没有超载的CDN服务器那边,这样可以平均分配网络的流量,也叫作负载均衡。

那么负载均衡是如何实现的呢?
如果让开发者在代码上给资源指定多个地址是很麻烦的事情。其实做法还是类似DNS域名解析里的根服务器,采用的是任播的技术,服务器对外声明的是通用的IP地址。利用任播的技术把流量转移到另外没超载的服务器就可以缓解了。除了任播,CDN还会采取TLS/SSL证书来给网站进行保护。

同时cdn会给帮你节省不必要的代码字符。比如你在代码中这么写(平时的空格主要是为了程序员的阅读和书写):

function add(a,b){
	return a+b
}

CDN会帮你压缩成:

function add(a,b){return a+b}

从而节约了带宽。

CDN还有的好处是节约了费用。比如你租云服务器的时候缴费了,用户每次浏览页面都需要向源服务器发请求。如果多用一个CDN,相当于少走了一段路,节约了带宽。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值