DNS 解析
TCP 连接
输入 url 后,首先需要找到这个 url 域名的服务器 ip,为了寻找这个 ip,浏览器首先会寻
找缓存,查看缓存中是否有记录,缓存的查找记录为:浏览器缓存-》系统缓存-》路由
器缓存,缓存中没有则查找系统的 hosts 文件中是否有记录,如果没有则查询 DNS 服务
器,
发送 HTTP 请求
得到服务器的 ip 地址后,浏览器根据这个 ip 以及相应的端口号,构造一个 http 请
求,这个请求报文会包括这次请求的信息,主要是请求方法,请求说明和请求附带的数
据,并将这个 http 请求封装在一个 tcp 包中,这个 tcp 包会依次经过传输层,网络层,
数据链路层,物理层到达服务器,服务器解析这个请求来作出响应,
服务器处理请求并返回 HTTP 报文
浏览器解析渲染页面
连接结束
返回相应的 html 给浏览器,因为 html 是一个树形结构,浏览器根据这个 html 来构建 DOM 树,在 dom 树的构建过程中如果遇到 JS 脚本和外部 JS 连接,则会停止构建 DOM 树来执行和下载
相应的代码,这会造成阻塞,这就是为什么推荐 JS 代码应该放在 html 代码的后面,之
后根据外部央视,内部央视,内联样式构建一个 CSS 对象模型树 CSSOM 树,构建完成
后和 DOM 树合并为渲染树,
之后进行布局,布局主要是确定各个元素的位置和尺寸,
之后是渲染页面,