关于DNS优化的策略

前言

客户端向服务端发起通信,会经过DNS解析查找,本文主要讲的就是关于DNS解析查找的优化

DNS解析流程

  1. 查找浏览器缓存。

  2. 查找系统缓存。

  3. 查找路由器缓存。

  4. 查找ISP DNS 缓存。

  5. 迭代查询。

优化思路

  1. 减少DNS查找,避免重定向

  2. 使用浏览器DNS缓存 、计算机DNS缓存、 服务器DNS缓存,防止DNS迭代查询;

  3. 使用Keep-Alive特性 来减少DNS查找的频率;

  4. 使用较少的域名(服务器主机)来减少DNS查找的数量。

影响DNS缓存的因素

  1. 首先,服务器可以表明记录可以被缓存多久。查找返回的DNS记录包含了一个存活时间(Time-to-live,TTL)值。该值告诉客户端可以对该记录缓存多久。

  2. 尽管操作系统缓存会考虑 TTL 值,但浏览器通常忽略该值,并设置它自己的时间限制。

  3. 此外,HTTP 协议中的 Keep-Alive 特性可以同时覆盖 TTL 和浏览器的时间限制。换句话说,只要浏览器和Web服务器愉快地通信着,并保持 TCP 连接打开的状态,就没有理由进行 DNS 查找。

  4. 浏览器对缓存的 DNS 记录的数量也有限制,而不管缓存记录的时间。如果用户在短时间内访问了很多具有不同域名的网站,较早的 DNS 记录将被丢弃,必须重新查找该域名。

  5. 不过,要记得即便浏览器丢弃了 DNS 记录,操作系统可能依然保持着该记录,这能扭转一下局面,因为无需通过网络发送查询,从而避免了明显的延迟。

  6. 当客户端的DNS缓存为空时(浏览器与操作系统缓存为空时),DNS查找的数量与Web页面中唯一主机名的数量相等。减少唯一主机名的数量就可以减少DNS查找的数量。

  7. 但减少唯一主机名的数量会潜在地减少页面中并行下载的数量。(HTTP1.1,浏览器对于同一个服务器的并行连接数有限制)因此,虽然避免 DNS 查找降低了相应时间,但减少并行下载可能会增加响应时间。所以,在减少 DNS 查找与允许高速并行下载之间做权衡,建议使用 2-4 个服务器主机。

 

DNS的预解析

可以通过用meta信息来告知浏览器, 我这页面要做DNS预解析

<meta http-equiv="x-dns-prefetch-control" content="on" />
可以使用link标签来强制对DNS做预解析:
<link rel="dns-prefetch" href="http://ke.qq.com/" />

 

posted @ 2019-06-09 09:18  大笛子  阅读(503)  评论(0编辑  收藏  举报