我正在尝试加快远程位置的网页加载时间。
我的服务器位于德国,第二台服务器安装在加利福尼亚州洛杉矶。
然后我配置 BIND 为来自美洲的客户返回 LA IP,为来自欧洲和亚洲的客户返回德国 IP。
但看起来 DNS 和名称服务器的响应时间仍有减少几十毫秒的空间。
目前,为我的域名提供服务的两个名称服务器都位于德国,据我所知,这会导致没有我的域名的 DNS 缓存的客户端出现延迟。我说得对吗?
- 如果我将其中一个名称服务器移至洛杉矶,是否会减少 DNS 解析时间?
- 名称解析期间如何选择要查询的名称服务器?
- 例如指定两个 NS:位于德国的 ns1.domain.com 和位于美国的 ns2.domain.com。将查询哪一个?指定 IP 而不是 ns1.domain.com 有帮助吗?
答案1
我同意 ceejayoz 的评论:如果担心国际存在,您应该使用具有国际存在的 DNS 提供商。实际上,这是解决您所担心的问题的唯一经济有效的解决方案。话虽如此,您从国际 DNS 存在中获得的主要好处不是响应时间短,而是可靠性,因为您的存在不太可能受到区域间重大路由问题的影响。
- 由于 DNS 缓存应该在大多数客户端的 ISP 级别进行,因此尝试优化 DNS 以缩短页面加载时间通常是一种误区。查找 DNS 记录后,远程服务器会在与记录 TTL 绑定的一段时间内记住后续请求。在继续此方向之前,请确保您已确定实际问题。(DNS 真的是这里的问题吗?延迟有多大?这真的是网络问题吗?)
- DNS 的设计目标是低延迟和容错。除非某个 DNS 服务器返回错误数据,或者DNS 基础设施本身的设计存在缺陷,通过您运营的基础设施解决此问题而获得的性能收益并不是很具成本效益。
- 所选的权威域名服务器是随机的。与 DNS 转发器(通常设置在您的专用网络上)不同,大多数递归/缓存 DNS 服务器将不是尝试记住哪个权威服务器对某个域返回了最快的响应。他们将尝试避免与多个名称服务器通信,除非第一个尝试的名称服务器没有及时响应。他们将要请记住,如果服务器没有响应请求,但持续时间超过五分钟,则只有失败的请求不会对该服务器重新尝试。(其他请求仍然是公平的)
从我的经验来看,在大多数情况下,处于你这种情况的人试图解决这个问题,都是在逃避现实。如果你不是,DNS 服务器本身、其运行状况或其所在的网络存在问题。
出于上述所有原因,我们强烈建议人们不要运行自己的权威 DNS 服务器。
答案2
如果我将其中一个名称服务器移至洛杉矶,是否会减少 DNS 解析时间?
“视情况而定”:对于查询此名称服务器的位于洛杉矶的机器:是的。对于查询此名称服务器的位于德国等地的机器,它将增加解析时间。
如果你想检查查询机器的位置,并给出拓扑上最近的名称服务器,你必须引入例如任播,其“是一种网络寻址和路由方法,其中来自单个发送方的数据报被路由到一组潜在接收方中拓扑上最近的节点,尽管它可能被发送到多个节点,但所有节点都由相同的目标地址标识。”
名称解析期间如何选择要查询的名称服务器?
据我所知,这是随机的。你无法提前预测这一点。
例如指定两个 NS:
ns1.domain.com
哪个在 DE,ns2.domain.com
哪个在美国。将查询哪一个?指定 IP 而不是 有帮助吗ns1.domain.com
?
有时你会从 得到答案ns1.domain.com
,有时从 得到答案ns2.domain.com
。你无法预测或影响这一点。
根据RFC 1035,记录的数据NS
是“指定对指定类和域具有权威性的主机的域名”。因此您不能使用 IP 代替ns1.domain.com
。
编辑:也许线程实用任播和/或如何使用 DNS 将访问者发送到最近的服务器?对你也有帮助。