为了更好的说明,我们先来看看一个页面的加载的过程。
1. 当用户在浏览器地址输入一个地址,然后enter。
2. 此时浏览器首先会去进行域名解析,要么读取本地的DNS缓存,或者去远程网络上面解析,最后的结果就是把域名对应的IP地址得到。
3. 得到了IP地址之后,浏览器就开始发送请求,建立TCP连接,经过三次握手之后,连接就建立了。
4. TCP连接建立之后,浏览器就把请求发送过去。
5. 服务端接收到请求之后,就开始处理,例如,如果请求的是一个页面(不管是动态的还是静态的),最后的结果就是:服务端把响应发送发送给客户端。
6. 在响应中,先发送的是响应头,之后就开始传递html内容。
7. Html内容经过网络传输到了客户端浏览器之后,浏览器就开始加载网页的内容,开始呈现。产生的页面的内容html文本是以流的形式传递的,通俗的说就是一点点的传输的,直到html文本传递完成,此时页面里面所有的资源还是没有加载的,只是页面的html骨架加载完成了。
所以浏览器这边收到html内容之后就开始解析html,而且是从上到下进行解析的:先解析html标记,然后解析head,然后解析body…