从输入URL到页面展现

当咱们输入 URL 并按回车后,浏览器会对 URL 进行检查,首先判断URL格式,好比是ftp http ed2k等等,咱们这里假设这个URL是http://hellocassie.cn,那么浏览器会对这个 URL 进行安全检查,而后浏览器内核会先查看缓存,再决定是发起请求,下载页面,仍是从缓存获取页面,若是是第一次访问,这时候尚未缓存,因此会去向服务器发起一个网络请求。算法

clipboard.png

下载页面

首先咱们要肯定服务器的网络地址,才能把请求发给它,因此要把这个URL转换成对应的IP地址,浏览器会依次从浏览器缓存,系统缓存,路由器缓存,本地DNS服务器进行一个递归查询,若是本地DNS服务器也没有对应的IP地址的记录,这时候它会把请求发至13台根域名服务器,根域名服务器收到请求后会判断这个域名是谁来受权管理,而后返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,再去联系顶级域名服务器。顶级域名服务器收到请求后,若是本身没法解析,再返回下一级域名服务器的IP,进行这样一个迭代查询以后,一直到子域名服务器。浏览器

clipboard.png

这个时候有两种状况,第一种是子域名服务器返回了这个URL对应的IP地址,第二种状况是通过了CDN调度,若是目标网站使用了CDN服务,则须要在CDN服务商的平台设置相应的CNAME记录,这个记录是CDN服务厂商的一个DNS服务器的域名,子域名服务器会返回这个CNAME记录,本地DNS服务器获得这个记录后,会向CDN服务厂商的DNS服务器查询,而后CDN服务厂商的DNS服务器返回CDN服务厂商的一台GSLB设备(全局负载均衡设备)的IP,本地DNS服务器携带自身的IP地址和要查询的域名向GSLB设备发起请求,GSLB设备根据IP,以及要查询的域名,选择一台用户所属区域的区域负载均衡设备,区域负载均衡设备根据必定的算法和策略,会向GSLB设备返回一个最适合的CDN节点的IP地址,好比说返回一个距离用户最近的CDN节点,由于CDN服务器缓存了网站的源服务器的数据,并且会像源服务器同样,响应用户的请求. 并且它离用户更近,因此能得到更快的响应速度。最后本地DNS服务器拿到这个CDN节点的IP地址。缓存

clipboard.png

获得IP后,会创建TCP链接,若是是https开头的URL,还会创建SSL链接,进行一个请求证书,生成对话密钥的过程。
而后开始进行HTTP请求,浏览器会先生成一个HTTP数据包,包含此次请求的信息,主要是请求方法、请求的说明和请求附带的数据,这个HTTP数据包通过传输层,头部加入双方的端口信息,被封装成一个TCP数据包,而后通过网络层,头部加入双方的IP地址信息,被封装成一个IP数据包,而后通过数据链路层,头部设置双方的MAC地址,封装成以太网数据包,最后变成二进制数据,传送到服务器。安全

clipboard.png

clipboard.png

clipboard.png

而后服务器做出响应,返回一个HTTP报文给浏览器,这个HTTP报文包含了状态行,消息报头,消息正文(就是HTML)。服务器

缓存获取页面

而后咱们再看第二种状况,若是本地有缓存,浏览器会先判断缓存是否过时,经过Expires和Cache-Control字段来判断是否命中强制缓存,Expires是服务器返回该请求结果缓存的到期时间,Cache-Control的max-age会返回一个相对时间,由于没法肯定客户端的时间是否与服务端的时间同步,因此同时存在时,Cache-Control的优先级更高。
若是强制缓存失效,进行协商缓存过程,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用本地缓存。网络

clipboard.png

渲染页面

在解析HTML的过程当中,开始构建DOM树,当遇到外链资源好比CSS/JS,浏览器会并行下载 CSS 和 JavaScript,
CSS下载时异步,不会阻塞浏览器构建DOM树,可是会阻塞渲染,
JS会阻塞HTML的解析,需等待脚本下载完成并执行后才会继续解析HTML,
并且由于 JS 可能会查询 CSSOM,因此必须在下载 CSS 文件以前将其阻止,而后才能执行 JavaScript。
img图片类资源会异步下载,不会阻塞解析,下载完毕后直接用图片替换原有src的地方。负载均衡

clipboard.png

而后合并DOM树和CSSOM树,生成render树,从 DOM 树的根节点开始遍历每一个可见节点,忽略脚本标记、元标记、display: none的节点,对于每一个可见节点,为其找到适配的 CSSOM 规则并应用它们。
而后开始布局,从渲染树的根节点开始进行遍历,计算每一个节点在网页的确切位置和大小。
布局完成后,将渲染树转换成屏幕上的像素,显示页面。异步

clipboard.png

相关文章
相关标签/搜索