浏览器渲染机制

浏览器渲染机制

浏览器进程

  • 浏览器进程:主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。
  • 渲染进程:核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。出于安全考虑,渲染进程都是运行在沙箱模式下。
  • GPU 进程:其实,Chrome 刚开始发布的时候是没有 GPU 进程的。而 GPU 的使用初衷是为了实现 3D CSS 的效果,只是随后网页、Chrome 的 UI 界面都选择采用 GPU 来绘制,这使得 GPU 成为浏览器普遍的需求。最后,Chrome 在其多进程架构上也引入了 GPU 进程。
  • 网络进程:主要负责页面的网络资源加载,之前是作为一个模块运行在浏览器进程里面的,直至最近才独立出来,成为一个单独的进程。
  • 插件进程:主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。

这里的排版引擎就是我们通常说的渲染引擎,也有叫浏览器内核的。

常见浏览器内核:Trident => IE、Gecko => Firefox、Webkit => Safari/Chrome、Presto => Opera

“在浏览器里,从输入 URL 到页面展示,这中间发生了什么? ”

1. 用户输入URL

浏览器判断输入内容是否为URL,如果不是URL,用浏览器默认的搜索引擎来合成新的带搜索关键字的URL,如果判断输入内容符合URL规则,则加上协议合成完整URL。

2. URL请求
  1. 浏览器进程通过进程间通信(IPC)把URL请求发送至网络进程,由网络进程发起真正的URL请求。

  2. 网络进程查找本地缓存是否缓存了该资源,如果有缓存资源,那么直接返回资源给浏览器进程,如果没有缓存则进入网络请求流程。

  3. 请求前第一步进行DNS解析,以获取请求域名的服务器IP地址。如果请求协议是HTTPS,需要建立TLS连接。

  4. 利用IP地址和服务器建立TCP连接。

  5. 构建请求行、请求头等信息,并把和该域名相关的Cookie等数据附加到请求头中,然后向服务器发送构建的请求信息。

  6. 服务器接收到请求信息后,会根据请求信息生成响应数据(包括响应行、响应头和响应体等信息),并发给网络进程。

  7. 网络进程接收到响应后,解析响应头的内容。

  • 如果返回的状态码是301或者302,从响应头的 Location 字段读取重定向的地址,发起新的 HTTP 或者 HTTPS 请求。

  • 如果响应行是200,根据Content-Type,判断服务器返回的响应体数据是什么类型,如果响应头中的Content-type字段的值是text/html,说明服务器返回的数据是HTML格式。

3. 准备渲染进程

同一站点:根域名(例如,geekbang.org)和协议(例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值