高性能web网站优化原则9——减少DNS查找

百度百科对DNS的说明:DNS(DomainNameSystem,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53

每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。

通常浏览器查找一个给定主机名的IP地址要花费20-120ms,在DNS查找完成前,浏览器不能从主机那里下载任何组件。响应时间依赖于DNS解析器,以及网络带宽,从浏览器角度回顾完DNS的主要工作之后,我们可以得出结论:减少页面花在DNS上的查找时间可以提高整体性能。

DNS缓存和TTLs

DNS查找可以被缓冲起来提高性能。一个请求之后,DNS信息会留在OS的DNS缓存中,之后对于该主机的请求无需DNS查找,直接从缓存读取。但浏览器有自己的缓存和OS的缓存是分离的。只有浏览器缓存中保留了DNS记录,就不会走OS来请求,浏览器丢弃了记录时才会向OS询问地址,然后OS通过其缓存来响应这个请求,如果不存在,则向远程服务器发请求,这会降低速度。

影响DNS缓存的因素

TTL:查找返回的DNS记录包含了一个存活时间Time-to-live,该值会告诉客户端可以对改记录缓存多久。但浏览器通常会忽略改值,并设置自己的时间限制。

尽管有DNS规范,但在DNS缓存如何工作上,给客户端留下了很大的灵活性,不同的浏览器在请求一个主机名时是否会进行远程DNS请求,是各不相同的。

总而言之通过使用Keep-Live和较少的域名来减少DNS查找是提高网站性能的实践之一。

相关推荐