我是如何让我网站的素材/资源加载的如此之快的
*本文是本人第一次写技术文章,如有不足请指正,谢谢!
让DNS很快
众所周知,想让人成功就要从娃娃抓起。所以想让一个素材系统变得超快则要从DNS解析做起。
可以看到,我的DNS表面上看起来是自建的,实际上我采用了一种自欺欺人的重路由的方法加快了DNS速度。
(里面还有阿里云DNS记录的原因和影响我们下文会说)
有人就要问了,马老师啊这个发生甚么事了阿里云VIP默认DNS提供的路由不香吗?干嘛还要费尽心思自路由呢?
这你就不知道了,在我测试过后,发现阿里云个人版DNS之所以比贵4倍的企业版速度慢,是因为企业版DNS有地域解析,会根据国内外返回不同节点(阿里云虽然有Anycast的节点,但其他都不是),这样如果国内用户轮询到一个美国节点肯定速度将大打折扣。
如图,国内查询会一股脑把所有地址丢出来,包括海外节点,所以速度令人担忧
而企业版在国内查询时返回的均为国内节点,所以速度表面上看起来比个人版快了一大截
可以看到,企业版在香港机器上返回的均为海外节点,所以看到这里你也知道自路由的重要性了吧
下面我来说一下我是如何实现自路由的。
首先,我们要得到所有节点IP,其实直接Dig就行,但我为了保险起见,还是全球PING了一下,确认和Dig一次的节点数是一致的。
接下来,就是利用阿里云自带的分区解析功能,将IP分为默认和海外两组,当然IPv6只有国内所以默认就好。
这里要注意,阿里云有一个IP是Anycast的,且国内外都有节点,所以我们把这个IP(140.205.1.1)既加入默认,又加入国外即可.
这里还有一个问题,我们要用域名projectoms.com解析projectoms.com,为了避免递归,需要为NS服务器添加胶水记录(Glue Records),相关原理自行谷歌。
胶水记录需到域名注册商处添加,我的是阿里云。
阿里云管胶水记录叫自定义DNS Host,按照说明添加IP即可,完成后我们需等待24-48小时让这些信息缓存到.com DNS服务器中,实际上我等了约10小时就可以了。
接下来就是把DNS改成我们自己的DNS了,大功告成!
这里注意,虽然Dig查询到的NS记录仍有阿里云的,不过一般DNS解析器都以注册局列出的DNS服务器为准,所以我们的自路由是有效的。
让建立连接很快
众所周知,建立HTTPS需要TCP握个手然后SSL再握个手,其中由于RSA长度问题SSL握手往往要花费数百毫秒,为了减少用户白屏等待时间,ECC椭圆曲线算法被采用了。
目前因为这个算法太新了,旧设备(XP)不支持,所以兼容性较差,但是我网站访问者一般都使用Win 10,Chrome. 几乎没有用IE访问的。所以我个人觉得ECC裸奔其实是没问题的(由于Android 4以下不支持,所以兼容性还是比较差的),至少我的用户中没有XP用户,且CDN多不支持双证书。所以2021年4月起你可以看见我的网站(国内)仅有ECC证书。
目前RSA证书没到期先勉强用着,等4月我们会换成ECC证书。
2021 年 3 月 21 日,正式启用全新 ECC 证书。
如图,握手时间在Server和Client配置相同时速度有明显提升。
让CDN回源很快
众所周知,由于中国的特殊网络环境,海外内容都非常的慢,而且由于我们将素材资源存储在GitHub上,而GitHub仅在美国本土有数据中心,所以让CDN回源很快非常重要。
(注意!本方法已暂时失效,且短期不会恢复!)最开始,我们采用的是Vercel。Vercel是一个无服务器函数平台,但是同时Vercel也提供基于AGA的强大内容分发网络,Amazon的中国网络质量也不用我多说,大家也是能体验出来的。所以我们采用了Vercel作为源站。
Vercel管理层有中国人,所以理论上对大陆相对来说比较友好,但是近期由于知道和白嫖Vercel的人越来越多,导致了AGA网络抽风。最近Vercel决定将大陆IP统一路由到美国的节点,导致速度直线下降,根本无法忍受(海外速度均正常),我们便决定采用新的方法处理大陆CDN回源。
现在我们使用的解决方案是:一开始,我们想利用在北京的一台阿里云VM将GitHub的内容存到本地,但由于阿里云到海外是电信的163民用网,速度也没有太大好转,最终我们采用在香港的一台GCP从GitHub上下载内容,再利用同步技术从北京的阿里云机子主动拉取香港GCP上从GitHub下载的资源素材文件,同步速度可以接受。
由于CDN回源设置的机子在国内,所以现在回源速度直接起飞。在我家的本地带宽已经可以跑满北京阿里云服务器带宽了(捂脸笑...)
最后一公里:让CDN边缘节点很快
国内
这个...其实没有什么好说的,鹅厂的CDN边缘节点质量还是不错的。并且在和鹅厂工作人员一番 切 磋 之后,我有了IPV6节点的使用权(虽然现在所有人都有了呜呜呜)目前的唯一比较遗憾的是我的加速类型不支持TLS 1.3,这个相信鹅厂很快就能解决。
海外
Vercel把AGA调的非常好,这个其实也没有什么遗憾、缺点之类的,要非要找个缺点出来,那就是AGA不支持IPV6,这个Amazon估计会....解决吧。
最 终 成 果
如果你想用这个资源站,欢迎与我联系:[email protected]!如果觉得我的文章有用,欢迎点赞转发赞赏!您的支持就是我创作的动力,非常感谢!!!
版权声明:
作者:Toms Project
链接:https://blog.projectoms.com/pages/140.html
来源:Toms Project 官方博客
文章版权归作者所有,未经允许请勿转载。
Goyasha
为了用上CF的防攻击,我网站速度从20ms到了200ms,完成质的飞跃