之前一直有个问题,为什么像谷歌百度等网站为什么只要输入网址,点下确定,基本能在很快的时间内就会出现他们搜索界面,基本加载速度就取决于你的网速。
后面大致明白了,代码的优化是一部分,还有一部分取决于你的节点对于该地区的延迟,所以如果你的服务器能就近反馈给你访问请求的内容,就会减少用户的等待加载时间,于是就孕育出了CDN。
这时候CDN是什么呢,我觉得还是按我自己的意思来解释来会好理解一点,CDN就是我们所说的内容分发网络,就是把你的内容数据一部分缓存在全球各个地区的边缘服务器里,当收到请求后就近把缓存的数据反馈给用户需要的内容。所以这就很简单了,一部分是需要把你的数据提前缓存下来的存储技术,还有一部分就是把请求归属到最近节点的分发技术,从而达到低延时的效果,同时也分散了用户同时间访问对于服务器的请求压力。
我这儿做了一个请求的指令转发图方便大家理解是怎样的工作原理
CDN阿里云对象云存储OSS
我这儿做了三个CDN加速。这儿我先来讲第一个阿里云对象云存储OSS,因为我的网站里边儿音频文件和图片文件采用外链的形式,我这儿有两个bucket,一个是图片的bucket,还有一个是音频的bucket,所以这儿需要对这两个不同bucket进行CDN加速,设置了两个CDN加速类型。
我的这些文件外链,基本上都要关联到我的域名,所以域名前就直接是CDN,然后加上我的域名地址,然后以及阿里对象云存储OSS作为文件的源网站,直接加速CDN域名
最后再把https的证书安装上去就完全没有问题了。
CDN加速环境
其次这儿就是我另外两个网站的CDN加速。首先我要讲一下我的这个mineolym.com这个网站,因为这个网站是搭建在阿里云ECS上的,因为这个网站之前已经备案了的,所以这个网站的我可以直接进行CDN全站加速,访问的话可以全球节点的加速。
然后我还有一个网站是iolym.com,然后这个网站是我部署在coding上边儿的静态的网站,里面的图片那些等文件也全部采用外链的形式,网站用Hexo来搭建的,这个网站没有备案,所以说在iolym.com这个网站在中国是没有办法进行CDN加速的,加速节点只能是在国外的这种流量访问请求,才能进行CDN加速,这个网站里面所有的图片等文件,是用的我阿里云对象云存储OSS外链,它的图片加载速度这些还是很不错的,只不过在整个网站的加载上边儿会慢一点,特别是在国内初次访问的时候,在它没有缓存的情况下,加载速度还是会有点慢。
CDN mineolym.com
首先大家来看我这个mineolym.com这个网站是怎么进行CDN加速的。
这个网站我做的全站加速,当时做这个还真的有点麻烦,东西没有弄的很明白,就域名解析这儿折腾了几十次。
我这个网站它是有固定IP的,当时我是直接在这个域名解析主机记录,用@和www然后A记录到IP,相当于直接把这个泛域名解析到一个固定IP上,然后同时后边儿又主机记录*CNAME到了CDN的地址。所以整个DNS它就出现了逻辑混乱,它不知道这个请求到底是该直接分配个IP还是直接转到CDN,然后后边我多尝试几遍才发现,我只需要在域名解析那儿CNAME到CDN,由CDN指定到IP就可以了,就相当于中间就多了一个CDN的流程,把缓存数据分布到全球的各个节点就可以了。这样的话,整个不管是国内访问还是国外访问,网站延迟一下就低了很多,同时对服务器压力也小很多,最后安装证书,对所有的访问请求,http全部强制转移到https,这样对整个网站的访问就更加安全。
CDN iolym.com
接下来我来讲一下我iolym.com这个网站。因为这个网站是我部署在coding上的,coding的节点又大部分是国外的,对于国内请求不太友好,而且我的域名是没有备案的,所以说这个网站我注定是没法儿像之前那个网站一样进行全球的节点加速,它只能加速除中国以外的用户请求。这个网站coding提供的是一个CNAME的地址,所以我只需要在CDN全站加速里面把coding的CNAME的源地址填进去指定访问端口,域名解析DNS到CDN的CNAME就可以了。
当时我不小心把iolym.com这个网站的证书注销了,但是为了安全,我CDN全部把http强制跳转到https,把80转到443端口,就没办法sll,网站就根本没办法登陆上去,所以说这CDN就有一个问题就是你的证书必须要及时更新,该续期的续期,不然一旦证书过期了过后,整个网站就没法儿访问,因为端口全部转的443。最后看一下这个网站,国外访问的延迟还不错,CDN的节点也挺多的,问题基本不大,如果国内不备案也能CDN就更好了。
记录一个我Hexo Gittalk的登陆跳转地址(我怕我哪天忘了)
Github→Settings→Developer settings→OAuth Apps→mineolym→Authorization callback URL→Update application
同时感谢 Monsterx 为本次CDN提供的技术支持