这两天折腾网站访问速度,前两天主要着眼CDN,但卡在无法自动刷新CDN缓存上,所以CDN页面缓存只能设置折中的10分钟,这增加了回源次数,导致冷资源访问较慢。
DNS
受博友天一生水启发,似乎域名解析也有折腾的空间,于是买了个阿里最便宜的DNS解析服务,传说中原价48元,阿里拍断大腿后每人限购一个,价格19.9元/年。
阿里云DNS付费版还分三个档次,最便宜的就是上面这个个人版,功能也比较减配,近似于免费版。我看了下,最实用的就是将免费的国内4组DNS节点升级为6个,另免费版没有国外节点,收费版有15个。其他多出的功能个人博客都用不到,基本上就是个装饰。
免费版没有海外节点,是否意味着国外请求要发到大陆解析?如果是这样的话就要多不少解析时间。刚好有多个域名,就用阿里解析平台自带的DNS测试平台测试了下收费和免费的解析速度。
国内解析,两者没有区别,平均都在60ms左右。但是免费的似乎会有较多的个别请求会在600ms以上,收费的也有这种情况,但较少。
国外解析,明显看到收费的要快一些,平均170ms,而免费的平均390ms。和国内一样,免费版在海外也有更多的超长时间,而收费的相对较少。


简单说,收费的在解析时间上比较收敛,而免费的比较发散,较长时间的占比较大。如果不关注海外访问者,那么两者基本上没有区别。
CDN
如果使用了CDN,那么域名解析就比较复杂了,为此我专门上网查了资料,基本上弄清楚了DNS在有CDN的情况下对解析时间的影响了。先看示意图,及简单说明。
无CDN时的浏览器请求流程
①浏览器向本地 DNS 服务器请求对域名的解析;
②如果本地 DNS 服务器有域名的解析结果,那么直接响应用户请求,返回该域名对应的 IP 地址;
如果本地 DNS 服务器没有域名的解析结果,那么则会递归地向 DNS 系统请求解析,随后将该结果返回给用户。这一点在CDN DNS解析中也一样。
③浏览器得到域名解析结果,即服务器 IP 地址后,向服务器请求内容;
④服务器将用户请求内容返回给浏览器;
有CDN时的浏览器请求流程
①浏览器向本地 DNS 服务器请求对域名的解析;
②DNS服务器返回CDN的NAS服务器地址;
③浏览器向CDN的NAS服务器请求内容分发服务器IP;
④⑤CDN的NAS服务器查找就近的文件分发服务器,并将其IP存储在CDN NAS服务器;
⑥CDN的NAS服务器向浏览器返回文件分发服务器IP;
⑧文件分发服务器返回内容给浏览器;
可以看出,有CDN后3-6步骤都是多出的,如果CDN上没有缓存,那么第7步还要回源,也是多出来的,由此可见,如果服务器足够强大,带宽足够高,响应足够快,那么不用CDN会更快。但个人博客服务器都接近免费送的,所以强不到哪里去,而CDN无论带宽还是稳定性上都要比垃圾服务器强很多,这也是使用CDN的主要理由。
结论
1、仅大陆使用,免费DNS和收费的无区别;
2、域名的DNS只负责用户浏览器到域名解析出你服务器IP,或你使用的CDN域名这段,到了CDN域名后就是它负责了,你的DNS就无能为力了。从这个角度看,如果使用了CDN,那么收费DNS的作用其实更有限,影响的主要在CDN端。
3、大陆使用,如果资源能够静态,没有多少回源,那么使用CDN后会更快,收费DNS作用聊胜于无;
4、海外收费DNS速度明显快,如果同时使用全球节点的CDN,那么静态资源在全球访问都会很快。我想纯静态博客是不是可以用这种方法加速全球访问?但如果网站没有流量,冷资源会被CDN自动释放,即使你把过期时间写1年也不管用。
5、只想折腾,DNS真没有多少折腾的空间,不如把力气花在CDN上。
6、对于个人博客,我觉得加速的优先顺序如下:
精简页面元素及大小>静态化>服务器配置>CDN>NAS及其他
阿里云的收费DNS和免费DNS区别点击这个链接去查看,其他云服务商的我估计差不多,没有对比过。


25 条评论