三、合理利用DNS TTL值 增加域名的缓存命中率
1、DNS 服务器采用递归或迭代来处理客户端查询时,它们将发现并获得大量有关 DNS 命名空间的重要信息。然后这些信息由服务器缓存。缓存为 DNS 解析流行名称的后续查询提供了加速性能的方法,同时大大减少了网络上与 DNS 相关的查询通信量。
2、TTL(Time-To-Live)即一条域名解析记录在DNS服务器上缓存时间。当信息缓存时,生存时间 (TTL) 值适用于所有缓存的 RR。只要缓存 RR 的 TTL 没有到期,DNS 服务器就可继续缓存并再次使用 RR 来应答与这些 RR 相匹配的客户端提出的查询。
3、适当地增大TTL值可以让DNS Server缓存该域名更长时间,增加缓存的命中率。TTL一般默认为一小时,可以根据实际情况设为一天甚至一周以上。当然,如果你域名的IP经常变化,则TTL不应过大,否则各地的DNS Server会暂时无法获得新的正确的IP地址。
四、合理使用DNS-prefetch让DNS预读取
1、从上面浏览器加载网页的过程可以看出,网页的请求是可以多任务同时进行的,对于网页有多个DNS请求的情况,可以让浏览器在后台先把要使用的DNS请求默默地完成,这样当用户在打开新的网页时,就可以节省DNS查询的时间了。
2、控制浏览器的DNS预读取就是DNS-prefetch标签了,DNS Prefetch应该尽量的放在网页的前面,格式类似是:
很多网站都使用使用百度广告联盟代码,使用这个就可以预读取DNS了。
3、默认情况下浏览器会有隐式的DNS Prefetch,即会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,我们可以通过下面的标签禁止隐式的DNS Prefetch:
4、需要注意的就是,DNS Prefetch只需要在用户在首先次打开网站时使用即可,没有必要每个页面都使用DNS Prefetch,否则就是重复DNS读取了,反而还无形中增加了DNS查询的次数,效果适得其反。
五、DNS域名解析拆分为多个域名增加并行下载量
1、一般来说网页的内容加载时会发生多个域名请求服务,如果你的网站JS、CSS、图片等非常多的话,建议将这些文件分别放在不同的域名上,这样浏览器在打开某一个页面时就可以同时向这些域名发送DNS解析请求了,能在一定程度上减少DNS时间。(点击放大)
2、网页的内容越多,分析的域名应该尽量多一些。例如html、htm,js、css,jpg、png、gif,php、asp都可以放在不同的域名上。在实际应用上,使用全站CDN或者是静态文件CDN就可以实现上述效果,并且结合css sprite一起来使用的。
3、css sprite的作用恰恰相反,它不是增加域名请求,而减少域名DNS请求,主要是用在图片上。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。
六、加快域名DNS解析速度方法小结
1、本文介绍的用DNS缓存、DNS预读取、拆分域名来减少域名DNS解析的时间的方法,对于一般的网站的加有效果可能并不明显,但是对于一些每天DNS请求达到上万级以上的网站,DNS加速的效果就显而易见了。另外,如果发现自己的网站响应速度过慢,不妨好好检查一下网页的DNS用时。
2、除了从网站本身的DNS解析来加快访问速度外,我们平常在选择DNS服务时尽量使用那些稳定可靠的DNS服务,这样的DNS服务响应速度和缓存率都是非常不错的。假如自己的网站分拆了多个二级域名,不妨好好用用CNAME,设置好TTL时间,保证网站的首先次解析,可以直接从运营商的DNS缓存中拿到。
(举报)