在HTTP请求的过程中,第一步就需要进行DNS域名解析,在本地完成把要请求的域名转换成要访问的IP,然后建立TCP链接,进行后续的HTTP请求与应答。
在Chrome 为了尽可能的提升用户体验,缩短用户的打开网页的等待时间,Google Chrome可谓想尽了办法,当然对DNS的预解析也在考虑范围内。
在打开网页等待时间过程中,DNS解析占了比较重要的比例,DNS解析需要花费的时间大概为1ms到几分钟不等,因此,如果能在用户请求前就对该请求进行解析,对提升用户体验起着至关重要的作用。
在Chrome中DNS预解析主要应用的在两个地方:
1.Browser Startup 即浏览器的启动时
在Chrome启动时,会对最近访问的前10个域名进行自动记录,当用户对这些域名发出服务请求时,Chrome完全节约了进行域名解析所花的时间,可以保证很快的打开用户请求的页面,减少了用户的等待时间,提高了用户体验。据Google的官方文档,这一步可以平均节约在200ms左右。
2.Omnibox 即Chrome的多功能输入框
当用户在Omnibox中输入请求URL,或关键字时,Omnibox的自动补全功能会对用户输入的内容进行智能提示,当用户输入发生改变时,Omnibox也会随之发生变化;Chrome就是在Omnibox给出用户提示的同时,自动对提示结果的URL进行预解析,当用户直接回车或者选中提示的结果,域名解析已经在次之前完成,减少了用户的等待时间。这一步可以平均节约100ms左右。