有必要在软路由上搭建 dns 缓存服务器么

2019-05-19 01:56:23 +08:00
 114514
之前在 b 站上看到一个声称“ 0.1 秒开网页”的教程,(AV16856336 )
· 原理是利用一台老机子作为 dns 的缓存服务器,替代掉公网提供的 dns 地址,因此省略了多余的解析时间,不过真的有必要那样做么?求大佬分析。毕竟本人不是很懂网页加载时间到底耗在哪儿,如果真的要做,有哪些解决方案是更为有效的?感谢。
13725 次点击
所在节点    宽带症候群
30 条回复
Trim21
2019-05-19 01:59:10 +08:00
可以参照前端的面试题 “从输入 URL 到页面加载发生了什么”

https://segmentfault.com/a/1190000006879700
ochatokori
2019-05-19 02:05:37 +08:00
作为用户想要获得更快的载入速度我能想到的就只有加快 dns 解析,买更好的带宽,更好的路由器了
作为开发者的话就多了

不过做缓存这种事只能加快第二次的访问速度,第一次硬要说的话多了一层转发还慢了
registerrr
2019-05-19 02:08:55 +08:00
从原理上来讲会有提升,但是一般来讲用公网 DNS 来解析延迟低一点的也就 5,60ms 用自建的 1ms,为了降低这一点点几乎感觉不出来的延迟不值得去麻烦。当然时间多、对这个感兴趣,自己去折腾一下可以。
Mohanson
2019-05-19 02:40:01 +08:00
可是据我所知,操作系统是自带
Mohanson
2019-05-19 02:40:16 +08:00
dns 缓存的
jasonyang9
2019-05-19 07:59:50 +08:00
系统不一定自带 DNS 缓存,要看 DNS 客户端的实现。。。
datocp
2019-05-19 08:09:10 +08:00
习惯用 openwrt 里面带 dnsmasq,首先 dns 服务器设定为网关 ip 会快于外网 ip,甚至有必要拦截 udp53 强制使用本地 dns 解析。这主要基于网络延迟考虑的。
以前说什么用 8.8.8.8 114.114.114.114 之类的,由于网络封锁的存在,会出现直接给出错误的 ip 映射甚至连带 ip 封锁,甚至各种 cdn 加速的存在。习惯了直接用 isp 提供的 dns 解析,当然有必要的话,像在联通线路打不开农行就利用 dnsmasq 加载电信线路的解析结果。
另外网站加速打开,除了 dns 解析过程快,有时候 mtu 这种封包的拆解过程才能加速网络呑吐,典型的的就是很多路由打开亚马逊美国非常慢。
iptables -t mangle -A FORWARD -o pppoe-wan -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
billytom
2019-05-19 09:33:30 +08:00
@datocp 想请教下最后这步 iptables 命令的含义,因为我也是 openwrt
likuku
2019-05-19 10:36:07 +08:00
看你访问的网站了... 假若你访问的网站的确解析都很慢,那么这还是有必要的(我最近就不得不在自己树莓派上重新搞起了 DNS 缓存服务器)。

另外,假若你能在你自有局域网里弄个闲置机器,装个 Squid,再通过它来访问网站,让它把你访问的页面(静态资源)尽可能都缓存在本地 RAM 里( /tmpfs ),将大幅度提高你高频访问的网站的访问速度 (十年前的老玩法了,简单粗暴效果明显)。
jerryrib
2019-05-19 11:07:10 +08:00
able
2019-05-19 11:18:09 +08:00
加速效果微乎其微
goodryb
2019-05-19 11:38:31 +08:00
1、如果你真要测试有没有效果,OS 层面弄一下好了,linux 下有 nscd,安装后需要配置一下,windows 下有 Dnscache 服务,开启就好。自建 dns 缓存就为了这几十 ms,没必要折腾。
2、前面还有人提到了 Squid,个人不建议个人用户安装这个,以现在的网络,没必要做缓存,反而还容易因为缓存出现问题。
goodryb
2019-05-19 11:45:14 +08:00
在 chrome 里面打开开发者工具,选中 disable cache,然后打开你要访问的页面,看下请求中 dns lookup 的耗时,以我这里访问 taobao 为例,各项时间解释看看下面 Google 的文档



https://developers.google.com/web/tools/chrome-devtools/network/reference#timing-explanation
goodryb
2019-05-19 11:47:42 +08:00
貌似 disable cache 对 dns 缓存不起作用,找个很久不访问的网站,也就几 ms
likuku
2019-05-19 12:38:17 +08:00
@goodryb 常见国内网站的话,的确用不着折腾这些...
其它的嘛,有时还真需要,比如 运气不好所用的接入线路服务商很渣,又条件所限没法换。
smdbh
2019-05-19 12:52:20 +08:00
没有必要,瞎折腾,不如换个质量好点的宽带
JamesR
2019-05-19 13:15:27 +08:00
网页加载时间到底耗在如下 3 个地方:
1.我的电脑性能,处理器快不快,快的话浏览器打开快。
2.我的网络带宽大小,国内大网站一般没问题,跨国要看国际出口拥堵情况。
3.前 2 个没问题情况下,服务器的上行带宽,一般是百兆口或千兆口,国内带宽(或流量)昂贵,人越多越慢。

DNS 影响微乎其微,实际上电脑本机就开着 DNS 缓存,服务里面“ DNS Client ”服务就是,命令 ipconfig /displaydns 可显示本机 DNS 缓存,禁用“ DNS Client ”服务后命令失效。
JamesR
2019-05-19 13:23:14 +08:00
@JamesR #17 第二条打错,改下,改为“ 2.我的网络宽带延迟,丢包,速度等情况,...”
bclerdx
2019-05-19 14:51:39 +08:00
@goodryb disable cache 是打勾还是不打勾?
cwbsw
2019-05-19 17:10:49 +08:00
@datocp
他贴的那个 MTU 的命令 OpenWrt 默认就是开启的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/565456

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX