浏览器原理学习记录 四

43 阅读2分钟

从出入 URL 到页面展现中间发生了什么

导航流程

  1. 用户输入 URL
  2. 浏览器解析 URL,拼出完整的 URL
  3. 把 URL 进程通过 IPC 把 URL 发给网络进程
  4. 网络进程检查本地是否有缓存,有直接用,没有进入网络请求流程
  5. 返回的数据进行类型处理,页面返回的 text/html
  6. 网络进程通知浏览器进程收到网络请求响应,浏览器进程判断是否和之前的是同一个站,是,就服用原来的渲染进程,否就开一个新渲染进程进展,
  7. 通知渲染进程提交文档,渲染进程和网络进程建立连接管道传输数据
  8. 数据传输完成,渲染进程通知浏览器确认提交,浏览器进程更新浏览器界面,修改导航状态
  9. 渲染进程开始页面解析和子资源加载

渲染阶段

  1. DOM 生成 传入 html 根据 html 生成 DOM 树 输出 DOM 树

  2. 样式计算 传入 css 根据 css 生成层叠样式表 stylesheet,转换样式表把样式属性标准化,计算 DOM 树每个节点的具体样式 输出层叠眼样式表 stylesheet

  3. 生成布局树 根据 DOM ,去掉不可见元素,比如 head 标签里面的东西,比如 display:none,跟具层叠样式表,计算元素的几何坐标位置,得出可见布局树

  4. 分层 根据两种情况:

    1. 使用 css 层叠样式属性
    2. 出现内容裁剪 把页面进行分层
  5. 输出绘制指令

  6. 栅格化 提交绘制指令到合成线程 根据视口生成图块

  7. 合成与显示 合成线程提交绘制图块指令给浏览器进程,浏览器进程开始绘制并生成页面