34.输入一个 URL 到渲染
一、题目描述;输入 URL 到渲染的完整流程
输入一个 URL 到渲染,自能讲多详细讲多详细。过程中打断问了 http 和 https 的区别,DNS 以及层层查找做了什么事情,重排重绘有什么区别,举例子说说什么属性改变是重排什么改变是重绘。
参考答案
DETAILS
1、URL 解析
- 用户输入:在地址栏输入 https://www.example.com/index.html。
解析协议和域名:浏览器解析协议(HTTP/HTTPS)、域名(www.example.com)和路径(/index.html)。
2、DNS 查询(域名解析)
- 浏览器缓存:首先检查浏览器缓存是否有该域名的 - IP记录。
- 系统缓存:若无,查询操作系统(如本地 - hosts文件)和路由器缓存。
- ISP- DNS缓存:向互联网服务提供商- (ISP)的- DNS服务器发起查询。
- 递归查询:若 - ISP无缓存,从根域名服务器开始逐级查询:
- 根域名服务器:返回 - .com顶级域名服务器的地址。
- 顶级域名服务器:返回 - example.com的权威域名服务器地址。
- 权威域名服务器:返回 - www.example.com的- IP地址。
- 结果缓存:最终 - IP存入各级缓存(按- TTL过期时间)。
3、建立TCP连接
- 浏览器向服务器发起 - TCP连接请求,三次握手建立连接。
- 三次握手:浏览器发送一个带 - SYN标志的- TCP包给服务器,服务器收到后回传一个带有- SYN/ACK标志的- TCP包以示传达确认信息,浏览器再回传一个带- ACK标志的- TCP包,代表握手结束。
4、发出 HTTP 请求
浏览器向服务器发送 HTTP 请求,请求所需的 HTML 文件。
5、服务器处理请求
- Web服务器(如- Nginx):根据路径找到对应的静态文件或转发给应用服务器(如- Node.js)。
- 应用服务器:处理动态请求(如查询数据库),生成 - HTML响应。
6、接收 HTTP 响应
- 响应报文:包含状态码(200 OK)、响应头(Content-Type、Cache-Control)、响应体(HTML内容)。
7、浏览器解析与渲染
- 构建 DOM树
- HTML解析:将- HTML字符串转换为- DOM树。
- 词法分析:将字符流转换为标签( - Tokens)。
- 语法分析:根据标签嵌套关系生成 - DOM节点树。
- 构建 CSSOM 树
- 解析 CSS:将 CSS 规则转换为 CSSOM 树(样式表结构)。 
- 阻塞渲染:CSS 解析会阻塞页面渲染,直到 CSSOM 构建完成。 
- 生成渲染树(Render Tree)
- 合并 DOM 和 CSSOM:仅包含可见节点(如排除 display: none 的元素)。
- 布局(Layout/Reflow)
- 计算几何信息:确定每个节点在屏幕上的位置和大小(如宽度、高度、坐标)。
- 绘制(Painting)
- 填充像素:将渲染树转换为屏幕上的实际像素(如颜色、边框、阴影)。
8、重排(Reflow)与重绘(Repaint)
二、题目描述:重排和重绘有什么区别?举例说明哪些属性会触发?
参考答案
DETAILS
- 重排(Reflow):重新计算元素的几何属性,导致布局变化。触发条件:修改影响布局的属性
width, height, margin, padding, left, top, font-size
- 重绘(Repaint):仅更新元素的绘制属性,不改变布局。触发条件:修改不影响布局的样式
color, background-color, visibility, border-radius
- 性能影响:重排比重绘代价更高,可能触发整个渲染树的重新计算。
