1.DNS解析
比如我们访问www.baidu.com,实际上机器更擅长记住百度的ip地址。那么在这里就需要将域名解析为IP地址。
DNS:因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
2.建立TCP连接
主机和服务器之间,经过三次握手,建立连接
3.发送http请求
http请求格式为:
| 请求方法URI协议/版本
| 请求头(Request Header)
| 请求正文
4.服务器处理请求,并做出http响应
响应报文和请求报文的格式类似
5.浏览器解析渲染页面
浏览器首先会解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。
DOM节点中的各个元素都是以盒模型的形式存在,这些都需要浏览器去计算其位置和大小等,这个过程称为relow;当盒模型的位置,大小以及其他属性,如颜色,字体,等确定下来之后,浏览器便开始绘制内容,这个过程称为repain。
页面在首次加载时必然会经历reflow和repain。reflow和repain过程是非常消耗性能的,尤其是在移动设备上,它会破坏用户体验,有时会造成页面卡顿。所以我们应该尽可能少的减少reflow和repain。
当解析过程遇到js时,就停止,等js执行完毕后,接着渲染。这意味着js会阻塞后续资源的下载,这就是为啥需要将js放在文档末尾。
接下来,浏览器会接着发送请求获取在HTML中嵌入的资源