如何获取浏览器的DNS解析时间

网络
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

原理:

a <= <random number>
t1 http://a-doppler.facebook.com/test_pixel?HTTP1.0&t=1&size=0k
t2 http://a-doppler.facebook.com/test_pixel?HTTP1.1&t=2&size=0k
t3 http://a-doppler.facebook.com/test_pixel?HTTP1.1&t=3&size=0k
t4 http://a-doppler.facebook.com/test_pixel?HTTP1.1&t=4&size=10k
t1 = DNS + New Connection +RTT
t2 = New Connection + RTT
t3 = RTT
10k /(t4–t3)~TCP bandwidth

(来源:《MobilePerformanceVelocity2011.pdf》 by DavidWei.)

这方案有两个关键点:

1、为了避免各种DNS缓存,每组请求必须用一个从来没被用过的全新N级域名。这就要求你的域名支持泛解析。例如我为了这个实践,开了*.qgy18.com的解析。

2、每组的***个请求响应必须以HTTP/1.0返回。我开始还没注意这个,经aoao提醒才明白,这样才可以确保后面的请求会重建Connection。

t2和t1指向同一个域名,且都需要重新建立连接,所以t2-t1是DNS解析时间;t2返回Connection: Keep-Alive,t3是在Keep-Alive指定的timeout时间内发起的新请求,且返回内容为空,所以是RTT(Round-Trip Time);t4在t3的基础上只是把返回内容大小由0k变成10k,所以t4-t3是加载这10k资源花费的时间,这就可以得到网络带宽了。为了减少网络波动,也可以多测几次取平均值。

责任编辑:何妍 来源: Jerry Qu的小站
相关推荐

2010-07-21 14:47:22

2017-12-05 10:44:50

浏览器页面加载

2016-10-09 08:38:01

JavaScript浏览器事件

2010-04-05 21:57:14

Netscape浏览器

2017-03-12 10:15:18

浏览器DOM树CSSOM树

2013-11-18 14:42:53

浏览器渲染

2013-07-25 14:17:17

2018-01-19 14:39:53

浏览器页面优化

2012-03-19 17:25:22

2012-03-20 11:31:58

移动浏览器

2012-03-20 11:41:18

海豚浏览器

2012-05-23 11:17:58

2012-03-20 11:07:08

2014-05-06 09:27:54

2010-12-21 10:11:35

手机浏览器

2013-01-14 10:58:51

傲游云浏览器

2009-06-22 14:06:00

java浏览器

2012-06-21 15:38:02

猎豹浏览器

2012-03-20 11:22:02

QQ手机浏览器

2012-03-19 17:17:00

移动浏览器欧朋
点赞
收藏

51CTO技术栈公众号