减少域名DNS解析时间将网页加载速度提升新层次
转载自:https://www.admin5.com/article/20150316/589049.shtml
提高网页的打开速度,一般地我们会选择使用CDN,利用“就近原则”让用户在最短的时间内获取到服务器资源,实际应用当中采用CDN的方式提高网站访问速度的效果也是最明显的。这也就是为什么国外的空间打开速度远不及国内的主机的访问速度的原因了。
我们知道在用户访问网站时先得经过域名DNS解析这一过程,可能很多人对于DNS解析时间平常并没有太在意。性能稳定、响应时间快的DNS域名解析服务与不稳定、响应过慢的DNS的域名解析时间可能相差1秒,而对于网站存在过多的域名解析请求,这个时间积累起来就非常地多了。
本篇文章就来分享一下通过优化网站DNS域名解析,减少域名DNS解析时间,从而让网站在原来的访问速度的前提下继续实现新的飞跃。
减少域名DNS解析时间将网页加载速度提升到新层次-DNS缓存/预加载/多域名
一、域名DNS解析原理和过程
1、DNS是怎么来的?DNS 是域名系统 (Domain Name System) 的缩写。在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
2、DNS解析的基本过程一:查找本地域名DNS缓存。当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址,例如计算机系统Hosts文件域名对应IP、路由器缓存、ISP(互联网服务提供商)DNS缓存。
3、DNS解析的基本过程二:通过上面的DNS查询依然没有找到想你的域名对应的IP地址,那么就要进入根服务器进行查询。全球共有13台根逻辑域名服务器。这13台逻辑根域名服务器中名字分别为“A”至“M”,真实的根服务器在2014年1月25日的数据为386台,分布于全球各大洲。
4、在根域名服务器中虽然没有每个域名的具体信息,但储存了负责每个域(如COM、NET、ORG等)的解析的域名服务器的地址信息。根域名服务器会将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器,这样你的域名查询请求会进入到相应的顶级域名服务器。
5、DNS解析的基本过程三:顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名(不带任何前缀的域名,如freehao123.com)服务器的IP地址告诉本地DNS服务器。如果还是没有找到,则进入到下一级域名服务器进行查找。如此重复,直到找到正确的结果为止。
6、查找到正确的域名对应IP地址后,本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。于是你的浏览器就正常访问网站了。下图是对Google.com为例,解释用户在访问谷歌时DNS解析的全过程。(点击放大)
二、浏览器加载网页的基本过程
1、从浏览器地址栏的请求链接开始,浏览器通过DNS解析查到域名映射的IP地址,成功之后浏览器端向此IP地址取得连接,成功连接之后,浏览器端将请求头信息通过HTTP协议向此IP地址所在服务器发起请求,服务器接受到请求之后等待处理。
2、览器加载显示html的顺序是:从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。如果遇到语义解释性的标签嵌入文件(JS脚本,CSS 下载过程会启用单独连接进行下载,并且在下载后进行解析,解析过程中,停止页面所有往下元素的下载。(点击放大)
3、什么原因会导致网页加载过慢?浏览器可以在下载CSS资源的同时,并行解析HTML文件,但是,一旦发现有脚本文件的引用,则必须等待脚本文件完成下载并且执行后才能继续解析。内容下载时间主要取决于用户带宽、服务器带宽、文件大小、文件数量等。
三、合理利用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缓存中拿到。
减少域名DNS解析时间将网页加载速度提升新层次相关推荐
- uc点网页显示服务器升级,让uc浏览器网页加载速度提升100%
摘要: 3G的最大特征就是网速的极大提升,而这正是 uc浏览器 手机浏览器的立身之本. 版本升级速度再提升100% 新发布的uc浏览器进一步改进了WAP/WEB网页的加载方式,不仅有效提高了浏览器的跳 ...
- 加快网页加载速度的五个有效的方法
加快网页加载速度的五个有效的方法 Filed under: 未分类 | Posted on 五月 1st, 2010 by 林涛 网页尽可能的快速加载对网站非常重要:用户希望快速的查看他们想要看的页 ...
- 提高网页加载速度的一些方法和技巧
网页的加载速度是评估网站质量一个重要指标,原因在于大多数用户能够容忍的网页加载时间只有几秒,如果超出了访客的忍受范围他们会毫不留情地关掉你的网页,所以网页载入速度会极大地影响网站的流量和访问. 以下总 ...
- 用 Flask 来写个轻博客 (28) — 使用 Flask-Assets 压缩 CSS/JS 提升网页加载速度
Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 Flask-Assets 将 Flask-Assets 应用 ...
- 分享网页加载速度优化的一些技巧?
日期:2013-2-17 来源:GBin1.com 不管你是不是相信,在最近的几年里,互联网网页的大小已经显著增大了.由HTTP Archive研究得出的结果表明,目前平均一个页面的大小是1.25M ...
- 【PHP】如何提高网页加载速度?
[php]如何提高网页加载速度? 1.减少页面请求: 从WEB运行原理上讲,IIS请求是无状态的,在服务器端一直是连接和关闭的不断进行着,如果能减少服务器请求,总的时间将会减少. 之前我下载163邮箱 ...
- 关于谷歌浏览器网页加载速度慢的问题
关于谷歌浏览器网页加载速度慢的问题 hello,大家好,我是零度安全,个人博客:https://xiaobai808.github.io/ 欢迎访问个人博客 问题:最近发现谷歌浏览器访问速度超级慢,在 ...
- Windows下使用apache模块实现合并多个js、css提高网页加载速度
这篇文章主要介绍了Windows下使用apache模块实现合并多个js.css提高网页加载速度,本文使用的模块是基于mod_concat自己修改的,需要的朋友可以参考下 现在的网站表现力越来越丰富,页 ...
- Tomcat网页加载速度过慢的解决方法
Tomcat网页加载速度过慢的解决方法 参考文章: (1)Tomcat网页加载速度过慢的解决方法 (2)https://www.cnblogs.com/magmell/p/7086229.html 备 ...
- Windows Server 2012网页加载速度慢解决方法
Windows Server 2012网页加载速度慢解决方法 背景 现象 问题原因 解决方法 背景 由于项目需要,在 windows server2012 上搭建了基于ssm框架和tomcat的大数据 ...
最新文章
- 三星出了个AI黑科技,不只是“换脸”这么简单
- WinCE设置DataGrid行高
- MySQL中文全文索引
- 【工具类】手动获取被spring管理的bean对象
- MySQL性能优化之char、varchar、text的区别(转载)
- 【转载】应广大群众的要求,今天开始连载《超容易的Linux系统管理入门书》一书...
- Pricing determination in SAP S4CRM
- Kubernetes的安全性怎么解?从4个方面为你列出方案清单
- centos中安装mysql5.6_CentOS中安装MySQL5.6报错的解决方法
- 菲氏微积分与Keisler微积分:两个不同时代的微积分教材
- 书评《鸟哥的Linux私房菜 基础学习篇》第四版
- OpenCV反色处理
- K线技术指标实现详解—MACD
- 十月上旬百度,阿里巴巴,迅雷搜狗最新面试七十题(第201-270题)
- matlab读取hpf文件,chpf
- 【微信小程序】一文读懂页面导航
- 【中秋特辑】赛博朋克『静夜思』,金属摇滚『月饼』,落霞秋水『思乡』,AI画笔下的中秋长这样!赠你 8400 个月亮 | ShowMeAI资讯日报
- kafka相关操作及问题汇总
- php 正态分布数据描述,正态分布-统计百科- 人大经济论坛-经管百科
- 新闻学计算机报哪一项,2017年新闻学考研常考名词解释汇总(一)
热门文章
- OneNote无法粘贴图片
- ssh secure shell:server responded algorithm negotiation failed
- python format是什么意思_python的format什么意思
- CSDN的第一节课的感想,nice!!!
- 搜狗站长平台多线程推送工具【免码-免VPS】
- 没有事业的女孩子很悲惨 - - - 一位老总的话!
- Oracle12C日志出现error=904怎样解决
- 使用iText对pdf中查找关键字坐标进行填充
- 函数名或方法名前加下划线 python
- [USACO 2008 MAR] 土地购买