当我们输入URL,按下回车发生了什么?


查找服务器的IP地址:


1.在本地hosts文件中查询


2.在浏览器缓存中查询。


3.在系统缓存中查询。


4.在路由器缓存中查询。


5.在DNS服务器中查询,直到找到这个IP地址。


6.通过TCP协议与Web服务器创建连接。(俗称三次握手),向服务器发送请求


7.浏览器接收响应,开始下载并渲染,将页面呈现在我们面前


    浏览器接收到html代码,即自上而下解析:构建DOM树+构建CSSOM =>渲染树(解析——构建对象模型Object Model)


    遇到script文件和CSS文件都会另起线程去下载;内嵌的script标签和style标签,会直接执行,分别阻塞DOM树和CSS规则树


    无论内嵌的script脚本、外链的script脚本下载完都会阻塞构建DOM树; CSS文件执行和内嵌的style标签阻塞CSSOM


    直到DOM树和CSSOM规则生成完毕后,浏览器结合两者生成渲染树RenderTree,浏览器将渲染树绘制到页面上,也就是首次显示页面


    最后,body底部的JS脚本下载完成后通过DOM API修改DOM, 通过CSSOM API修改样式,每次修改都会造成渲染树RenderTree的重新布局和重绘, 也就是Reflow。(而修改颜色的话,只会Repaint 不会Reflow