一、输入URL地址,如:http://www.yejm16361.com/demo...。javascript
二、DNS解析URL地址中的域名返回IP地址(若是是主机名是IP地址就跳过该步骤)。css
三、 创建TCP链接,这就是经典的TCP链接中的三次握手,总的来讲做用就是为了在不可靠信道上可以可靠的传输。html
四、浏览器向 web 服务器发送一个 HTTP 请求命令,如:GET/demo/index.html HTTP/1.1。java
五、浏览器向 web 服务器发送请求头信息。web
六、Web服务器应答,如:HTTP/1.1 200 OK,包含应答协议版本号和状态码。浏览器
七、Web服务器发送应答头信息。服务器
八、Web服务器向浏览器发送数据。网络
九、Web服务器关闭TCP链接(若是浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive就延时跳过该步骤,超时仍然会关闭TCP链接,超时时间通常是5秒或15秒)。dom
一、在输入URL以后,依赖网络模块,webkit资源加载器加载HTML网页(只要是webkit可以解析的,都会把输入的URL地址资源当成HTML解析)。异步
二、加载完HTML网页以后,就会调动HTML解析器去解析构建节点。
三、解析期间若是遇到link节点,就会调用资源加载器去异步加载,完成以后用css解析器解析执行;若是是行内样式,会当即交给CSS解析器解析执行。这里CSS解析器,解析结果会生成一个css rule tree(css规则树)。
四、解析期间若是遇到script节点,就调用javascript解析器去解析并执行,这里注意的是若是是src脚本,那么在设置了H5新加的async属性的时候会异步加载加载并执行,不然会同步加载解析并执行,且阻塞dom树的建立;若是是行内脚本,那么不管怎么设置都会当即解析并执行,且阻塞dom树的建立。这里Javascript脚本执行主要是经过DOM API和CSSOM API来操做DOM树和CSS规则树。
五、解析期间若是遇到节点会依赖其余资源,如:图片,视屏,语音等,webkit会调用相应的加载器利用网络模块,去异步加载解析。
六、等到全部的同步和异步资源解析完成以后,浏览器引擎会把DOM树中无需渲染的节点(如display:none修饰的节点)不放进Rendering Tree(渲染树)中,并把CSS规则树中的样式附加给渲染树相应的dom节点,而后计算每个dom节点的位置,这也就是layout(布局)和reflow(重排,回流)过程。