昨天搭好博客之后,发现博客的访问速度真是惨不忍睹,延迟3秒左右才显示页面,其中Font-Awesome相关资源竟然用了9s多才加载出来!!!真的不能忍,于是Google了一下怎么优化访问速度,发现目前常见的解决方案是采用CDN加速,因此去了解了下相关的知识,下面简单介绍。

CDN原理简介

CDN翻译过来叫做内容分发网络,原理其实很简单,举个例子就是你有一台位于上海的服务器,你在服务器上部署了你的个人网站。对于上海的用户来说,服务器本身距离用户很近,所以访问速度自然很快;但是对于远在新疆的用户来说,请求从新疆到上海,再从上海返回至新疆,这一来一回的时延是非常大的。为了解决这个问题,就有了内容分发网络。
CDN厂商在全国各地放置高性能加速服务器节点,想象一下如果你的网站部署在了这些CDN节点之上,那么不管用户在哪个省份,用户只需要访问离自己最近的CDN节点,就能够大大缩短请求传输的距离,大大提高用户的访问速度。
实际上我们通常采用的做法是将自己的域名CNAME到CDN厂商提供的CNAME域名,这样一来用户在访问你的博客域名的时候,会自动跳转到CDN厂商的域名,这个过程中用户是无感知的。通常CND厂商会将你博客上的资源缓存到自己的CDN网络中,这样一来用户的请求基本上都会命中CDN,只有当CDN中缓存过期,才会去请求源站,也就是你在上海的服务器。
tips:细心的童鞋会发现CDN和源站之前的关系类似于软件开发中的数据库和缓存之间的关系~
tips:其实CDN的原理十分简单,就是减少用户与服务器之间的物理距离。爱玩游戏的童鞋可能已经注意到,其实游戏界很早就利用这一原理来提高玩家的游戏体验。在早期的的网络游戏中,梦幻西游和DNF是其中比较有代表性的两款,在他们的游戏登陆界面,都选择要登陆的大区,这些大区基本是按照省份来命名,例如山东一区,北京一区等等,通常存储这些大区玩家数据的服务器也都架设在所属的省份。因此如果玩家选择自己所在省份的服务器,那么数据在玩家和服务器之间传输的 大专栏  如何优化个人博客的访问速度时延就会很低,玩家的游戏体验就能得到保证。相反如果没有这种规则,例如英雄联盟这款游戏,如果玩家选择的大区的服务器架设在离自己比较远的省份,那么游戏中延迟就会比较高,影响到操作的流畅性(LOL官网上可以查询到每个大区的服务器架设在哪个省份~)。

利用CDN对你的博客进行优化

市面上已有许多CDN厂商对外提供加速服务,例如著名的网宿、阿里等,使用他们的加速服务有一个重要前提,那就是你自己的网站域名必须要备案!!所以如果你刚刚用Git Page搭好自己的博客,还没得及购买域名并备案,那么你可以先去买一个好记的域名,然后备案;如果嫌慢,你可以试着用其他方式对博客进行加速。
你所需要做的事就是去CDN厂商购买CDN服务,也就是供给你一个CNAME域名,然后你去自己购买域名的代理商那里把你自己的域名CNAME到厂商给你的域名上,就实现了CDN加速,至于具体的操作每个厂商都不太一样,这里就不详细介绍了。

参考链接

DNS相关(CNAME,NS,A记录之间的关系)
ruanyifeng.com/blog/2016/06/dns.html
阿里云CDN配置
http://www.baiguangnan.com/2018/06/12/configcdn/
加速域名、源站地址与回源host之间的关系
https://cloud.tencent.com/developer/article/1195058
CDN详解
https://zhuanlan.zhihu.com/p/28940451
CDN原理
https://www.mtyun.com/doc/products/storage/cdn/index
七牛CDN配置教程
https://developer.qiniu.com/fusion/kb/1322/how-to-configure-cname-domain-name