CDN
火云邪神讲:天下武功唯快不破!同样,在现代社会中,如果做事情不讲究速度,那么势必会落后于他人。
而随着Internet技术和多媒体技术的不断发展,网络服务已经与我们的生活不可分割,例如:移动支付、视频电话……自媒体的发展,更是让短视频服务成为了每个上网人的首要选择。
但是,视频网站的容量是有限的,在为各地区的人们提供服务时,网络访问距离过长(例如:视频服务器在北京,访问的用户在南京,那么传输的距离比较长),用户与网站之间的链路被突发的大流量数据拥塞(例如:春晚时,全国十几亿人都同时接入视频服务器,链路多了会导致网络通道堵塞),都将导致网络负载迅速增加,从而使用户的访问质量受到严重影响。例如:网页登录延迟、视频卡顿……
那么,在网络世界中,谁为我们提供了速度保障呢?那就是我们的幕后英雄:CDN。
01.什么是CDN
CDN:Content Delivery Network,即内容分发网络。
拆开解释:
-
内容:指的是静态资源。
-
静态资源:前端的固定页面,无需查数据库,也不需要程序处理,直接能显示的页面。例如:图片、视频、文档、JS、CS、HTML。
-
分发网络:指的是将静态资源分发到不同地理位置的服务器。
课代表总结
CDN是一种用于加速网络内容传输的关键技术。它通过将数据存储在分布式的全球服务器上,以及使用智能路由和缓存策略,使内容能够更快速地传送给最终用户。
CDN可以将静态资源分发到多个不同的地方以实现就近访问,进而加快静态资源的访问速度,减轻服务器以及带宽的负担。
02.CDN的访问机制
现在,我们已经了解了CDN的内容。那么,在网络上部署了CDN后,用户访问服务器时,CDN具体是怎么发挥作用的呢?
CDN的工作机制,优点类似京东的仓储系统。即提前在各地仓库储备好商品,当用户下单后,则直接从用户所在城市的仓库发货,缩短了物流的时间。
-
“客户端”通过浏览器访问服务器。
-
浏览器调用域名解析库对域名进行解析,得到CDN缓存服务器的IP地址(即边缘节点)。
-
浏览器使用得到的IP地址,向缓存服务器发出访问请求。(类比为:南京的文档君在京东上下单购买某件商品A)
-
CDN缓存服务器判断是否存在已缓存的内容,并进行对应的操作。(类比为:京东系统查看南京的仓储中心是否有商品A)
-
存在待缓存的内容:将对应的数据返回给客户端。(南京的仓储中心有商品A,则直接从南京仓储中心发货给南京的文档君)
-
不存在待缓存的内容或待缓存的内容失效:缓存服务器从实际IP地址(即中心节点)获取内容。获取内容后,一方面在本地进行保存,以备以后使用,另一方面把获取的数据返回给客户端,完成数据服务过程。(南京的仓储中心没有商品A,则从总仓储中心发货给南京的文档君)
-
说明:边缘节点缓存的内容可通过CDN缓存配置进行维护, 且若中心节点的发生变化,则缓存服务器中对应的内容失效。
- “客户端”得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
03.CDN的架构
CDN的网络架构由节点组成,每个节点包括高速缓存服务器(Cache)和负载均衡设备。
CDN网络架构的三种节点:
-
中心节点:指CDN网管中心和DNS重定向解析中心负责全局负载均衡和内容管理,设备系统安装在管理中心机房(即视频网站的主服务器)。存储所有内容,为边缘节点未命中的用户提供服务。例如:深圳。
-
区域中心节点:可按要求存储全部或部分内容,为边缘节点未命中的用户提供服务。例如:南京。
-
边缘节点:指异地节点,CDN分发的载体,就近为用户提供流媒体服务。例如:南京的雨花台区。
每个节点的组成:
-
高速缓存服务器(Cache):负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。
-
负载均衡设备:负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时,负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡。
CDN的网络架构有三种模式:
- 二级架构
- 三级架构
- 混合架构
混合组网架构是二级组网架构和三级组网架构的结合。
在该区域的用户发展规模较小时,暂时采用边缘节点和中心节点二级架构提供服务。
随着用户数量的发展,当该区域的用户规模达到一定数量时,添加区域中心节点,为该区域提供三级架构服务。
关于CDN的内容就讲这么多了,一句话秒懂总结:CDN其实就是一个幕后英雄,他承担的是搬运工的工作,即提前将内容搬运到我们附近,让我们能尽快获取对应的内容。
案例
通过阿里云的CDN给wordpress提升打开速度。
1、使用CDN Enabler插件
打开WP后台,左侧栏有插件选项,点开后搜索CDN Enabler插件,安装即可,记得安装后“启用”插件。这里不再赘述。插件设置如图所示:
2、购买CDN流量包
国内目前最大厂子当属阿里云和腾讯云,但稳定性相对来讲阿里云好一些。
阿里云CDN流量包:https://iil.ink/alicdn
腾讯云CDN流量包:https://iil.ink/txcdn
除此之外,你还可能需要购买https流量包,不过这个cdn和https流量包都非常便宜。
注:本文以阿里云为例,其他云其实也都类似,看文章的受众程度,实在是需要,再搞一篇腾讯云的教程。
1)在阿里云控制台找到CDN,并到域名管理处添加域名,如图所示。
2)添加域名,操作如图所示,然后选择下一步,域名添加完成。
3)返回到域名管理处,获取CNAME解析地址并到域名DNS服务商进行CNAME解析。
具体做法是选择对应的域名解析-添加记录,主机记录填需要加速的域名前缀(比如你的域名是image.xxxxx.com,那么主机记录处填img),记录类型选择CNAME,记录值填CDN服务商提供的CNAME地址。如图所示:
4)域名CNAME解析完成后需要等几分钟左右即可生效。如图所示,状态是“已配置”则代表域名CNAME解析成功。
5)在生效过程中,我们可以先对需要CDN加速的域名进行配置。如图所示:
注:实现CDN加速只需要配置图中框起来的几项,其他几项可根据需求自行设置。
1)回源设置 回源设置中回源HOST一定要填写,不然服务器无法辨认是哪个域名来访问获取资源。
回源协议根据自己源站的HTTP协议自行选择,白天的博客站是使用的HTTPS协议,因此选择开启HTTPS。
需要特别注意的是,回源SNI,比如有的服务器只有一个IP,但该服务器下服务了多个域名(多个网站在运行),这时就需要在回源SNI中添加源站域名。
2)缓存配置
如下图所示,如果你只需要对源站图片进行加速,只需设置了有关图片的后缀。
注:另外各大服务商的配置方式不一定相同,请参照对应CND服务商的设置规则进行设置。
3)HTTPS配置
如果你源站使用了是HTTPS协议,那么加速的域名同样需要配置HTTPS。现在国内大多数厂商把原先免费1年的ssl证书都缩短为3个月了,如果需要长期的SSL证书,这里推荐一下你看一下下面2篇文章:
国内SSL证书都是3个月有效期,一分钟轻松搞定 SSL 证书自动续签
4)性能优化
CDN性能优化,包括传统智能Gzip压缩及Brotli压缩两种算法,功能上可以减少用户传输内容的大小,加速访问效果。
但这两种压缩方式只针对html、js、css等文本文件,如果是只针对图片CDN加速,该处的性能优化可以忽略。
到此,如果操作上没有出现错误,CDN加速就可以宣告配置成功啦!
当然,wordpress的优化远不止这些,CDN只是这外在因素之一,如果还要更深的优化,你还需要做一下动静分离。