每日一题 (让我更优秀把!)

1. 浏览器进程有哪些
- 浏览器进程
负责页面显示、用户交互、子进程管理,同时提供存储等功能
- 网络进程
负责页面的网络资源加载,比如在地址栏输入一个地址,网络进程将请求后得到的资源交给渲染进程处理。
- 渲染进程
将HTML、CSS和JavaScript转换为用户可以与之交互的网页,排版引擎Blink 和 JavaScript引擎V8都是运行在该进程中,默认情况下,Chrome会为每个Tab标签创建一个渲染进程。
渲染进程都在沙箱模式下。
- GPU进程
Chrome
- 插件进程
负责插件的运行,因为插件容易崩溃,所以需要通过插件进程进行来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。
2. css解析规则是什么样的
选择器解析规则:从右向左

- 优先级
- !important
- 行内样式
- 选择器 ID选择器>类选择器>标签选择器
- 如果两个声明的来源和优先级相同,后出来的样式会覆盖先出现的样式
3. prefetch 和 preload 的区别
<link ref="preload" as="script" href="test.js">
- prefetch
- 刘阿龙年起的空闲事件加载页面将来可能用到的资源的一种机制,可以用于加载非首页的其他页面所需要的资源,以便加快后续页面的首屏速度。
- 请求的资源会被放入缓存至少5min(无论资源是否可以被缓存)
- 当页面跳转时,未完成的prefetch请求不会被中断。
- preload
- perload加载的资源是在浏览器渲染机制之前进行处理的,并且不会阻塞onload事件;
- preload 可以支持加载多种类的资源,可以加载跨域资源。
- preload 加载的js教本其加载和执行的过程是分离的,即preload会预加载相应的脚本代码,待到需要时自行调用。
- 对比
- preload 和 prefetch 都没有同域名的限制
- preload 主要用于加载当前页面所需的资源,perfetch主要用于加载将来页面可能需要的资源。
- 不论资源是否可以缓存,prefetch会存储在 net-stack cache 中至少5min
- preload 需要使用as 属性 指定特定的资源类型一边浏览器为其分配一定的优先级,能够正确的加载资源。
4. 说下http3
- HTTP/3 的目标时通过解决HTTP/2的传输相关问题,在所有形式的折百上提供快速、可靠和安全的Web连接,使用的传输层网络协议为QUIC,QUIC的底层使用的是UDP协议。
- QUIC的特则会给你
- TLS1.3 用来保证客户端和服务端在数据传输过程的数据安全性,可以对明文数据进行加密传输。QuIC是全程加密的。高并发的时候可能存在性能问题。
- 解决HOL阻塞
TCP协议的stream放在同一个连接中进行传输,如果发送数据丢包的情况,TCP会重新发送所有的文件,从而导致HOL阻塞问题。
QUIC则是在每个流的基础上执行丢包检测和恢复逻辑。从而只会重发失败的流,而不是整个文件。
- 连接的迁移
- TCP建立链接需要四个元素,客户端IP地址+客户端端口+服务器IP地址+服务器端口,如果有一个发生变化,则重新建立TCP连接。
- QUIC 引入连接标识符(CID)的概念,每个连接都有一个编号用于标记客户端和服务端的唯一连接,因为CID是由QUIC定义的,所以不会随着网络迁移的变化而变化,从而不需要重新握手。
5. 如何统计白屏时间
- 白屏时间
白屏时间是指从用户进入网站(输入URL、刷新、跳转等方式)的时间开始计算,一直到页面有内容展示出来的时间节点)。
这个过程包括 dns查询、建立TCP连接、发送首个http请求(如果使用https 还要介入TLS的验证时间)、返回html文档、html文档head解析完毕。