从浏览器输入网址到显示网页的过程如下
-
浏览器根据输入的域名从 DNS 服务器得到域名的 IP 地址
-
向这个 IP 的服务器发送 HTTP 请求
-
服务器收到、处理并返回 HTTP 请求
-
浏览器得到返回内容
-
根据 返回的HTML 结构生成 DOM 树(有一些不可见的DOM元素不会插入到渲染树中,如head或者display: none)
-
根据 返回的CSS 生成 CSSOM
-
将 DOM 和 CSSOM 整合形成 RenderTree
-
布局render树(Layout/reflow),负责各元素尺寸、位置的计算
-
绘制render树(paint),绘制页面像素信息
-
浏览器会将各层的信息发送给GPU,GPU会将各层合成(composite),显示在屏幕上
解析页面遇到外链接时会单独开启一个线程去下载资源,大致有一下三大类
-
CSS样式资源(异步下载,不会阻塞浏览器构建DOM树,但是会阻塞渲染)
-
JS脚本资源(阻塞浏览器的解析,加上defer可以延迟执行,async可以异步执行)
-
img图片类资源(异步下载,不会阻塞解析)
网友评论