用户打开网站的整个流程中,DNS解析时第一环,当用户输入域名并敲回车后,windows系统调用DNS client,寻找到用户配置或者自动分配的DNS IP,之后就开始整个解析过程,DNS服务器忙和了一段时间,完成解析到此域名的数字IP服务器,一般情况下返回给定域名对应的IP地址会花费20到120毫秒的时间,而且在这个过程中浏览器什么都不会做直到DNS查找完毕。
一旦解析完成,连接建立并保持,也就是顺利的访问以后,网页以后的下载速度就和DNS没关系了,直到下一次重新解析和发起访问请求……
DNS解析,变快,有意义吗?
通过上面DNS的运行方式,你一定有了答案,当然有意义了。
呵呵,很多小型网站,DNS解析时间都接近0.5s,甚至我见过一个网站,需要1.2s才可以解析出结果的。这是个非常令人吃惊的数据,因为对于一般网站用户的等待时间超过8s就会放弃访问,而对于电子商务网站,4s就是用户忍耐极限。而一般经过优化的小型网站,DNS解析时间都可以控制在200MS左右,而带宽在100M左右的网站,经过优化,DNS解析时间可以控制在50-100ms。
如何优化呢?
首先利用好TTL,因为要尽量多的让用户直接从运营商的DNS缓存中拿到A记录,这样才能保证最快,但是也要保证,当你的服务器出问题时,需要尽快的切换,所以,这个TTL设置也是有一些情况需要综合研究的。
1、 你肯定清楚,自己的服务器有没有多台或者备份。如无备份,那服务器宕机时,你只能生抗,所以,TTL时间对于你来说是越长越好,因为TTL短的目的是服务器发生问题时,可以及时切换,这个对于没有备份的网站基本利用不上。所以,你的TTL设置就是越长越好,当然了,也不能无限长,一般设置TTL 3600即可。
2、 如有备份或者多台服务器,会发生由于服务器宕机需要及时做切换,TTL时间越短,切换越及时,但是TTL时间越短,也就意味着运营商DNS经常缓存不住,一般用户,设置为TTL 600即可,如果对及时切换,要求特别苛刻的网站,设置TTL 120即可。
其次寻找足够热的域名解析商。很多网站,都是自己做一个域名解析服务器,看着自己掌控方便了,但是大错特错,因为你的域名解析服务器,基本上都不被缓存,每次从根服务器询问一圈,绕了大半个地球,才给出最后的结果,那自然会效果很差。所以,要寻找足够热的域名解析商。什么叫热,就是被访问的次数特别多。足够热的话,域名解析服务器的A记录基本上会被各地运营商的DNS一直缓存着。如何判断域名解析商够不够热呢?其实,也很简单,看看这个域名解析商的客户够不够多,他们客户网站够不够热门,访问的人够不够多。
也给大家推荐一个更好的方法,就是找CDN厂商做域名解析。因为CDN厂商服务的客户,有很多是很热很大用户群很多的,所以,这些CDN厂商的域名解析服务器,服务效果那是岗岗的好。
最后是进阶技巧---巧用CNAME。不少网站拥有者,在同样的一个或多个服务器上运营很多小网站;或者自己运营一个网站,但是拆分了很多个二级域名。针对这些情况,严重需要善用CNAME,把所有的这些小网站的域名或者二级域名,cname到一个自己定义的统一域名。然后设置这个cname对应的TTL时间足够长。这样的话,保证网站的第一次解析,可以直接从运营商的DNS缓存中拿到,也就是直接拿到cname后的记录。然后,第二个cname记录,再设置一个相对合理的TTL值。通过这样,变相加热了第二级域名,通过加热的第二级和缓存时间足够长的第一级,最大化的优化DNS解析时间。该技巧,一定要确保,最后A记录得到的IP,可以服务这些原始域名。
例子:
www.abc.com. 7200 IN CNAME hot.abc.com.
hot.abc.com. 600 IN A 127.0.0.1
什么叫拆分域名?
很多网站,在搭建网站的时候,只是申请和购买了一个域名,然后所有内容:图片、js、css、html、php等等,都放在一个域名下。
而拆分域名,指的就是根据不同的应用,而将域名拆分出来。
拆分域名有什么好处?
HTTP1.1下,针对同个域名,IE6和IE7内核的浏览器,只会同时发起2个连接。IE8内核的浏览器,可同时发起6个连接。
很重要吗?
非常重要,请看图示。
使用IE6打开一个所有内容均在同个域名下的网站
使用IE8打开一个所有内容均在同个域名下的网站
我们看到的是,在IE6的情况下,请求第7个元素,需要0.7s,而在IE8的情况下,0.277就开始请求第7个元素。由此可以看到,并发连接更多的时候,网页打开速度会更快。
由以上数据可以看到,多个域名,不管是在IE6和IE8的情况下,拆分域名,都会使网站的打开速度变快。
现实中也是如此,各大型网站,他们无一不是在拆分域名。
另外,要纠正一个IT人的误区。因为IT人一般都热衷技术,很多人的操作系统等版本都很新,用的都是IE8甚至以上的浏览器。但是整个中国,到目前为止,使用IE6和IE7的用户,仍然非常另IT人震惊的80%左右。所以,拆分域名,基本上可以缩减你20%以上的打开速度。
按照什么原则拆分域名呢?
个数多少合适?
一般50M以下网页类网站,域名保持在4、5个即可,过多后范围会导致你的维护和使用变得复杂。
100-500M以下网页类网站,域名保持在8-10个左右。
1G以上的网页类网站,域名无所谓个数,保持10个以上,具体个数根据自己的业务和管理特点随心制定。
什么内容放到同个域名下?
页面类:html、htm等
样式类:js、css等
图片类:jpg、png、gif等
动态类:php、asp等
这样的分配方式,将来有利于你进一步优化你的网站,并且在你需要寻找加速工具时,也可以针对性的选择不同的加速方式。
如何应用到页面上?
缓存DNS查找可以改善页面性能。这种缓存需要一个特定的缓存服务器,这种服务器一般属于用户的ISP提供商或者本地局域网控制,但是它同样会在用户使用 的计算机上产生缓存。DNS信息会保留在操作系统的DNS缓存中(微软Windows系统中DNS Client Service)。大多数浏览器有独立于操作系统以外的自己的缓存。由于浏览器有自己的缓存记录,因此在一次请求中它不会受到操作系统的影响。Internet Explorer默认情况下对DNS查找记录的缓存时间为30分钟,它在注册表中的键值为DnsCacheTimeout。Firefox对DNS的查找 记录缓存时间为1分钟,它在配置文件中的选项为network.dnsCacheExpiration(Fasterfox把这个选项改为了1小时)。
当客户端中的DNS缓存都为空时(浏览器和操作系统都为空),DNS查找的次数和页面中主机名(也可说成域名)的数量相同。这其中包括页面中URL、图 片、脚本文件、样式 表、Flash对象等包含的主机名。减少主机名的数量可以减少DNS查找次数。减少主机名的数量还可以减少页面中并行下载的数量。减少DNS查找次数可以 节省响应时间,但是减少并行下载却会增加响应时间。我的指导原则是把这些页面中的内容分割成至少两部分但不超过四部分。这种结果就是在减少DNS查找次数 和保持较高程度并行下载两者之间的权衡了。
因为IE6、7的同一域名下的并行数量为2个,那么,为了节省DNS查找并保持较高的并行,由于按页面大小分割成了两个至四个部分,在同一个部分里,我们一般把同域名的2个(同域名加载数的限制)加载项写在一起,再写另外其它域名的加载项。根据一般的网站而言,一般情况下,在一同一个部分里,不同域名出现的次数一般在4个就够用了(也就是可同时至少加载8张图片),如果需加载内容不多,尽量控制在2个。
from http://pengyfpengyf.blog.163.com/blog/static/1983435920119290415100/
相关推荐
- dig和nslookup命令:这两个工具可以帮助测试DNS解析过程。 8. **性能优化**: - 缓存策略:调整缓存大小和过期时间,减少网络延迟。 - 记录分割:将大型区域拆分为多个小区域,提高查询速度。 总的来说,...
- **拆分DNS**:根据不同访问者的网络位置或身份,向其展示不同的DNS解析结果。 - **TSIG(信号安全处理)**:通过密钥认证的方式确保DNS通信的安全性。 - **DNSSEC**:一种增强DNS安全性的机制,通过数字签名验证...
DNS服务是互联网上的一种核心组件,它通过将易于记忆的域名转换为计算机可识别的IP地址,使得用户能够方便地访问网络资源。...此外,理解DNS的工作机制对于网络安全、网络优化和故障排除也至关重要。
DNS 预解析可以提前解析域名,减少页面加载时的延迟。Service Workers 和 PWA 可实现资源离线存储和预缓存,即使在网络不稳定的情况下也能快速加载。通过合并文件、压缩图片、按需加载、优化资源加载顺序等方式减少 ...
在前端开发领域,性能优化是提升用户体验和网站可访问性的重要环节。这本"前端性能优化原理与实践"小册子深入探讨了如何通过一系列技术手段优化前端页面,旨在帮助开发者构建更快、更流畅的Web应用。以下是该压缩包...
9. **DNS预解析**:通过DNS Prefetching技术,预先解析页面链接指向的域名,减少DNS查找时间。 10. **减少DOM元素数量**:过多的DOM元素会增加渲染负担,应精简HTML结构,减少不必要的元素。 11. **移动优先的响应...
- 将域名转换为对应的 IP 地址的过程称为域名解析,通常由 DNS 服务器完成。 - 在 Python 中可以通过 `socket` 模块提供的 `gethostbyname()` 函数实现简单的域名解析。 3. **Python 的 `socket` 模块:** - 是 ...
《Web应用软件架构的优化与演进》这篇文档主要探讨了随着Web应用访问量增长,其架构如何逐步优化和演进以应对更高的并发需求和性能挑战。本文档由刘侠撰写,专注于软件架构风格和图像处理的研究。 Web应用是一种...
- **DNS**:域名解析和负载均衡,配置CDN时也需要调整DNS设置。 2. **应用层架构** - **开发框架**:选择合适的开发框架,如Spring Boot或Django,提高开发效率,保证代码安全。 - **页面渲染**:结合动态内容和...
- **高速缓存域名服务器(caching-only server)**:主要用于提高查询速度,通过缓存最近查询的结果来快速响应后续请求。 - **转发服务器(forwarding server)**:当本地服务器无法解析某个域名时,会将请求转发...
- **DNS的重要性**:DNS是互联网基础设施的核心组成部分之一,它使得用户可以通过易记的域名来访问网站和服务,而无需记住复杂的IP地址。 #### 二、DNS的体系结构和原理 - **域名空间和体系结构**: - 域名空间是...
接着,域名通过DNS解析转化为IP地址,这个过程中,本地DNS服务器和根域名服务器参与解析,直至找到目标服务器的IP。然后,客户端与服务器建立TCP连接,服务器响应请求并返回数据,最后浏览器接收数据并显示页面。 *...
防御措施包括使用高性能DNS解析程序(如dpdk的DNS),限制zone请求速率,IP来源限速,设置IP白名单,以及响应速率限制。 2. **CDN流量调度**: - 当进行CDN流量调度时,需考虑的因素多样,包括但不限于: - 业务...
- 为了进一步提高网站的响应速度,引入了缓存机制,包括本地缓存和分布式远程缓存。 - 本地缓存主要用于快速访问经常使用的数据,而分布式缓存则可以在多台服务器之间共享数据,从而显著提升系统的并发处理能力。 ...
- **DNS解析**:A记录用于映射域名到IPv4地址,CNAME用于别名,MX用于邮件服务器,TXT用于自定义信息,NS用于指定子域名的DNS服务器,AAAA用于IPv6地址,SRV记录服务位置。 8. **Java中Socket的用法**: - **...
### 高性能Nginx服务器-反向代理与高并发高可用系统...综上所述,通过合理的项目拆分、高效的DNS解析机制以及高性能Nginx服务器作为反向代理,可以有效提升系统的并发处理能力和可用性,进而满足大规模用户访问的需求。