关于域名解析和CDN的一点经验

这两天折腾网站访问速度,前两天主要着眼CDN,但卡在无法自动刷新CDN缓存上,所以CDN页面缓存只能设置折中的10分钟,这增加了回源次数,导致冷资源访问较慢。

 

DNS

受博友天一生水启发,似乎域名解析也有折腾的空间,于是买了个阿里最便宜的DNS解析服务,传说中原价48元,阿里拍断大腿后每人限购一个,价格19.9元/年。

阿里云DNS付费版还分三个档次,最便宜的就是上面这个个人版,功能也比较减配,近似于免费版。我看了下,最实用的就是将免费的国内4组DNS节点升级为6个,另免费版没有国外节点,收费版有15个。其他多出的功能个人博客都用不到,基本上就是个装饰。

免费版没有海外节点,是否意味着国外请求要发到大陆解析?如果是这样的话就要多不少解析时间。刚好有多个域名,就用阿里解析平台自带的DNS测试平台测试了下收费和免费的解析速度。

国内解析,两者没有区别,平均都在60ms左右。但是免费的似乎会有较多的个别请求会在600ms以上,收费的也有这种情况,但较少。

国外解析,明显看到收费的要快一些,平均170ms,而免费的平均390ms。和国内一样,免费版在海外也有更多的超长时间,而收费的相对较少。

关于域名解析和CDN的一点经验-图片1

免费DNS海外测试

收费DNS海外测试

简单说,收费的在解析时间上比较收敛,而免费的比较发散,较长时间的占比较大。如果不关注海外访问者,那么两者基本上没有区别。

 

CDN

如果使用了CDN,那么域名解析就比较复杂了,为此我专门上网查了资料,基本上弄清楚了DNS在有CDN的情况下对解析时间的影响了。先看示意图,及简单说明。

无CDN时的浏览器请求流程

关于域名解析和CDN的一点经验-图片2

 

①浏览器向本地 DNS 服务器请求对域名的解析;

②如果本地 DNS 服务器有域名的解析结果,那么直接响应用户请求,返回该域名对应的 IP 地址;

如果本地 DNS 服务器没有域名的解析结果,那么则会递归地向 DNS 系统请求解析,随后将该结果返回给用户。这一点在CDN DNS解析中也一样。

③浏览器得到域名解析结果,即服务器 IP 地址后,向服务器请求内容;

④服务器将用户请求内容返回给浏览器;

有CDN时的浏览器请求流程

关于域名解析和CDN的一点经验-图片3

①浏览器向本地 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区别点击这个链接去查看,其他云服务商的我估计差不多,没有对比过。

[免费版和付费版DNS差别]

本站文章授权后方可转载,请勿侵权! 如喜欢可点击分享按钮分享。

 
    • 明月登楼
      明月登楼 2

      国内的DNS其实很坑的,我现在不到万不得已都尽量少用国内DNS!

        • 水拍石
          水拍石

          @ 明月登楼 我还没有发现坑在哪里,一直很稳定,而且解析速度也不错,当然我也没有用过国外的DNS,所以没有对比。

        • 网友小宋
          网友小宋 3

          国外访问慢就慢白,毕竟我方问他们也不快。

            • 水拍石
              水拍石

              @ 网友小宋 对等伤害,这个想法不错。

            • 土木坛子
              土木坛子 1

              我的一直使用cloudflare套装了,省心。

                • 水拍石
                  水拍石

                  @ 土木坛子 我是按耐不住的想折腾,要不用国内云套装也很省心。博客还是得专注内容,折腾太耗时间。

                • 段先森
                  段先森 4

                  那么,到底为什么这么快

                    • 水拍石
                      水拍石

                      @ 段先森 使用了W3 Total cache静态化插件和阿里云CDN,两个都很重要。

                    • 天一生水
                      天一生水 5

                      可以尝试一个网站多个域名,一个主域名,图片静态资源用二级域名。有很多好处,不细说了。
                      P.S.你的缓存设置应该有点问题,打开留言时,留言信息里保存的有其他网友的昵称,邮箱网址信息。

                        • 水拍石
                          水拍石

                          @ 天一生水 我的图片和其他附件已经分离了,JS和CSS没有分离,看网上说这样分离了等于重定向一次,也需要时间,还有安全问题,所以我就没有做。缓存方案这两天没有改,就是来回折腾缓存和去掉缓存对比,估计是那个环节缓存的数据出错了,我今天清理下缓存,看下留言信息会不会正常。

                            • 天一生水
                              天一生水 5

                              @ 水拍石 用二级域名静态资源后,在head头,用dns-prefetch,甚至preconnect标签,可以与主域名同步加载。浏览器一般都能支持多任务处理的。

                                • 水拍石
                                  水拍石

                                  @ 天一生水 谢谢解惑,我向人工智能再好好学习下怎么操作。将CSS和JS分离出来后,不影响CDN回源吧,因为分离出来的二级域名仅相当于转发,它下面是没有对应文件的。按道理只要浏览器能访问,CDN就能回源,但还是对这个逻辑有点不肯定。

                                    • 天一生水
                                      天一生水 5

                                      @ 水拍石 css,js这些静态资源是真的分离,不是虚拟分离。新建一个站点(对象云存储之类的也行),用来专门保存静态资源。至于要加cdn什么的,正常操作即可。

                              • Mr.He
                                Mr.He 3

                                如果网站静态资源较多,带宽又不够高,一次性加载会造成网络拥堵,用上cdn后会好很多。

                                  • 水拍石
                                    水拍石

                                    @ Mr.He 是的,静态资源多CDN就是神器。

                                  • 雅余
                                    雅余 4

                                    从源头开始优化。

                                      • 水拍石
                                        水拍石

                                        @ 雅余 听你的,先从模板开始干起。

                                      • 老麦
                                        老麦 7

                                        我感觉你的博客已经足够快了,速度跟静态也没啥区别啊。

                                          • 水拍石
                                            水拍石

                                            @ 老麦 和静态还是没法比,静态是努力的方向。我今天想到一个主意,用AI写一个插件,在wordpress后台手动填url的方式清除缓存,我以为这样很简单,结果捣鼓了一天还没有弄好。

                                              • 老麦
                                                老麦 7

                                                @ 水拍石 别人访问你的站点我不知道,反正我关了缓存,开启无痕模式来测试你的站点跟我的站点速度差不多的,也就几毫秒之间的差距。
                                                在我眼里这差距等于没区别!
                                                不过呢,你有时间,也有精力的话,研究一下,折腾一下也是好的,毕竟知识是一点点积累的。我现在 PHP 是忘得七七八八了,这个语言也是牛,这么多年过去了,还是非常能打。

                                                  • 水拍石
                                                    水拍石

                                                    @ 老麦 你测试的应该是CDN有缓存的,如果你找个CDN没有缓存的资源就比较慢,因为CDN要回源。我现在就是想解决WP后台能刷新CDN的问题,这样就可以把页面CDN缓存设成1个月,或者更久,这样就不会经常回源了。

                                                    • 水拍石
                                                      水拍石

                                                      @ 老麦 告诉你一个好消息,刚才我测试成功了,现在可以在后台手动刷新阿里CDN。我大概知道昨天那个自动刷新代码可能哪里出问题了,后面再人肉测试,看能不能搞好自动的。

                                              匿名

                                              发表评论

                                              匿名网友