输入URL回车到浏览器呈现出内容页面都发生了什么?

这个问题要想一点一点都回答清楚我觉得非常非常难,涉及的内容之多,范围之广,我看了好多篇这个问题的文章,从一点一点懂了,到很多都不懂,再到晕头转向,再到放弃。没办法,我自己出去面试的时候也被人问过这个问题,只好把懂得一点点写下来,算是梳理一遍流程。里面有很多我觉得不错的引用文章。

参考文章:https://segmentfault.com/a/1190000007766425

https://zhuanlan.zhihu.com/p/23155051       

                 http://frontenddev.org/link/js-css-between-the-order-of-the-relationship-with-the-performance-of-the-html-page.html

                http://www.cnblogs.com/yuezk/archive/2013/01/11/2856540.html

我就不写是通过回车还是鼠标点击确定还是手机端触屏点击发送URL的了,直接就发送了。

1、输入域名之后,客户端的DNS服务器开始解析域名,解析域名之前先查找缓存中有没有解析过这个域名的IP,然后去hosts文件看有没有这个域名。没有就发起DNS服务器解析。

2、解析好之后,位于应用层的TCP协议开始连接服务器,其中有三次握手。连接成功之后IP协议开始将请求的IP地址MAC等信息做成协议包,通过传输层和网络层、链路层找到这个IP地址的服务器,查找IP地址其中又涉及很多服务器中转,因为不会一次就查找成功目标IP地址的服务器。

3、查找到目标服务器之后,服务器开始响应,以8KB的内容开始传输给客户端。

4、当浏览器接收到页面数据开始,浏览器引擎开始解析HTML,将HTML解析成DOM树,在解析的同时遇到css的link标签,开始下载css(下载同时也在解析),下载完成之后,开始解析css,将css解析成规则树(解析css的时候,也在解析HTML成DOM树),遇到<script>标签,在请求的时候,所有html和css解析停止,等待js的文件返回和执行,完毕之后才开始接着解析html和css,一直等到html和css解析完成,一条html的DOM树,一条css的规则树。

5,有了DOM树和规则树,开始结合成渲染树,同时将渲染树开始进行布局和绘画,后面要是有js操作DOM节点,又会进行重新布局和重绘。


1、请求资源不是一开始解析html就请求资源,也不是解析到了link标签或者script标签的时候解析资源,而是在解析html构建DOM的时候如果浏览器觉得时候比较长的时候就开始请求后面的资源。

2、请求index.html时,如果内容太多会分段请求,解析的时候也回分段解析,请求不会是遇到标签时候开始解析的,浏览器会自动判断时候请求

3、js操作DOM也不一定马上回引起重绘,引擎会积攒一批。


问题:1、一定要下载完html才会开始解析html标签吗?

不是,下载一部分就开始解析,解析遇到时间长的会请求下面的资源。

   2、什么时候下载css文件和js文件?

浏览器自己判断,可能会在解析html的时候

3、什么情况下解析html会受到阻塞?

js下载执行的时候

4、css文件下载会阻塞html解析吗?会阻塞文档的渲染吗?

不会,会。只要渲染不成功,页面就不会显示内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值