浏览器页面渲染流程梳理

当我们在浏览器中输入网址并回车后,经历了哪些过程才能看到完整的页面呢?本文将详细介绍浏览器页面渲染的流程。

1. URL 解析

首先,浏览器会对输入的 URL 进行解析,将其分成协议、域名、路径等部分。然后,浏览器会向 DNS 服务器请求域名对应的 IP 地址。如果该域名没有被缓存,浏览器会向上级 DNS 服务器发出请求,直到找到对应的 IP 地址为止。

2. 建立连接

接下来,浏览器会根据协议(HTTP 或 HTTPS)建立与服务器的连接。如果是 HTTPS 协议,则需要进行 SSL 握手过程,确保通信安全。

3. 发送请求

连接建立完成后,浏览器会向服务器发送 HTTP 请求。请求包括请求方法、URL、协议版本、请求头和请求体等信息。

-- ----

------------------ -
  ------- -------
  -------- -
    --------------- ------------------
  --
  ----- ---------------- ----- ------ --
--
  -------------- -- ----------------
  ---------- -- ------------------
  ------------ -- ----------------------

4. 接收响应

服务器处理完请求后,会将响应(包括状态码、响应头和响应体等信息)发送回浏览器。如果服务器返回的是 HTML 页面,则浏览器会开始解析页面。

5. 构建 DOM 树

浏览器接收到 HTML 页面后,会根据 HTML 标记构建 DOM 树。HTML 标记按照嵌套关系组成一棵树,由根节点、元素节点、文本节点等组成。DOM 树的根节点是 document 对象。

---- ---- ---

--------- -----
------
  ------
    ----- ----------------
    ----------- -------------
  -------
  ------
    -------- -- - ------------
    ------- -- - --------------
  -------
-------

6. 构建 CSSOM 树

在构建 DOM 树的同时,浏览器还会根据 CSS 样式规则构建 CSSOM 树。CSSOM 树是由 CSS 规则按照层叠顺序组成的一棵树。

-- ---- --

---- -
  ---------- -----
-

-- -
  ------ ----
-

7. 生成渲染树

接下来,浏览器会将 DOM 树和 CSSOM 树合并成一棵渲染树,该树只包含需要显示的节点和样式信息。

8. 布局

浏览器会根据渲染树的信息,计算每个节点在屏幕上的位置和大小,并生成布局信息。

9. 绘制

最后,浏览器会根据布局信息,将页面绘制到屏幕上。这一过程被称为绘制或者合成。

通过了解浏览器页面渲染的流程,我们可以更好地理解前端页面性能优化的相关问题,例如如何减少 HTTP 请求、如何优化 DOM 和 CSSOM 的构建等。

本文介绍了浏览器页面渲染的整个流程,包括 URL 解析、建立连接、发送请求、接收响应、构建 DOM 树、构建 CSSOM 树、生成渲染树、布局和绘制等环节。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/32969


猜你喜欢

  • NPM 包 Ractive 使用教程

    Ractive.js 是一个快速、灵活和易于使用的开源模板引擎,可以帮助我们更加轻松地构建交互式前端应用。在本教程中,我们将学习如何使用 NPM 包 ractive 来集成 Ractive.js 模板...

    6 年前
  • Redux-Persist 使用教程

    Redux 是一种 JavaScript 应用程序状态管理工具,可以通过不同的方式进行数据持久化,其中 redux-persist 提供了一个简单而有效的方式来实现 Redux 状态的本地持久化。

    6 年前
  • npm 包 jquery-ui-bootstrap 使用教程

    简介 jquery-ui-bootstrap 是一个基于 jQuery UI 和 Bootstrap 的扩展库,它提供了一系列的组件和样式来帮助开发者快速构建 Web 应用。

    6 年前
  • npm 包 svg.js 使用教程

    SVG.js 是一款基于 SVG 的轻量级图形库,它提供了一套简单易用的 API 让开发者可以方便地操作和绘制 SVG 图形。本文将介绍如何使用 npm 包安装和使用 SVG.js。

    6 年前
  • npm 包 GraphiQL 使用教程

    GraphiQL 是一个用于 GraphQL API 开发的交互式 IDE 工具,它可以通过浏览器直接访问和测试 GraphQL API。在前端开发中,GraphiQL 可以作为一个强大的调试工具来辅...

    6 年前
  • npm 包 OwlCarousel2 使用教程

    简介 OwlCarousel2 是一个基于 jQuery 的响应式轮播插件,它可以帮助开发者快速实现网站的轮播效果。本文将介绍如何使用 npm 安装和使用 OwlCarousel2 插件。

    6 年前
  • npm 包 Shepherd 使用教程

    Shepherd 是一个开源的 JavaScript 库,提供了一种易于使用但功能强大的方式来创建带有导航和浮动提示的交互式向导。本文将详细介绍如何使用 Shepherd。

    6 年前
  • npm包jquery-infinitescroll使用教程

    在Web开发中,无限滚动是一种常见的设计模式,它允许用户在页面上滚动时自动加载更多内容。jQuery Infinitescroll是一个方便的工具,使得实现这种效果变得非常容易。

    6 年前
  • npm包flot的使用教程

    在前端开发中,数据可视化是一个十分重要的部分。而Flot是一款基于jQuery的JavaScript绘图库,能够轻松地创建漂亮且交互性强的图表。 本文将详细介绍如何使用npm包flot,并提供代码示例...

    6 年前
  • npm 包 sockjs-client 使用教程

    SockJS 是一个轻量级的 WebSocket 客户端,它能够提供 WebSocket 的兼容性及备选方案。而 sockjs-client 是 SockJS 的一个 npm 包,提供了对于浏览器和 ...

    6 年前
  • npm 包 es6-promise 使用教程

    介绍 es6-promise 是一个在浏览器和 Node.js 环境下的 Promise 实现库。在使用这个库之前,需要先了解什么是 Promise。 Promise 是 ECMAScript 6 中...

    6 年前
  • npm 包 pdfmake 使用教程

    在前端开发中,生成 PDF 文件是一个常见的需求。pdfmake 就是一个可以在浏览器端使用的 JavaScript 库,可以方便地生成 PDF 文件。在本文中,我们将介绍如何使用 npm 包 pdf...

    6 年前
  • npm 包 mathjs 使用教程

    在前端开发中,数字计算是经常遇到的问题。如果要实现高精度、复杂计算,手写代码实现会非常困难。这时候,npm 包 mathjs 就可以派上用场。 安装 使用 npm 安装 mathjs: --- ---...

    6 年前
  • npm 包 clusterize.js 使用教程

    在前端开发中,我们可能会面临需要处理大量数据并将其渲染到页面中的情况。但是在处理大量数据时,直接将它们全部渲染到页面上会导致性能问题和用户体验下降的风险。为了解决这个问题,可以使用 npm 包 clu...

    6 年前
  • npm 包 Lovefield 使用教程

    简介 Lovefield 是由 Google 开发的一款轻量级、跨平台的 SQL 引擎,适用于浏览器和 Node.js 环境下的前端应用。它提供了类似于 SQL 的 API,使得在前端应用中使用数据库...

    6 年前
  • npm 包 page.js 使用教程

    简介 page.js 是一个轻量级的客户端路由库,可以帮助开发者构建单页应用程序(SPA),实现前端页面之间的无刷新跳转和数据传递等功能。本文将介绍如何使用 npm 安装和使用 page.js,以及如...

    6 年前
  • NPM包Vega使用教程

    介绍 Vega是一个用于创建交互式数据可视化的开源工具,它可以将数据转换为图表、地图和其他可视化形式。它基于JavaScript,并支持在Web浏览器中使用。 安装 安装Vega NPM包很简单,只需...

    6 年前
  • npm 包 sinon.js 使用教程

    简介 sinon.js 是一个 JavaScript 的测试框架,它提供了一系列的工具和 API,使得在编写前端单元测试时变得更加容易和高效。本文将会详细介绍如何使用 sinon.js 进行前端单元测...

    6 年前
  • npm包jquery-noty使用教程

    简介 jquery-noty 是一个轻量级的jQuery通知插件,可以用于显示提示、警告、错误等消息。它支持多种类型的消息,如普通信息、成功信息、警告信息及错误信息等,并且可以自定义样式和位置。

    6 年前
  • 如何将 Vue 组件转成 React 组件?

    Vue 和 React 都是目前最流行的 JavaScript 前端框架之一。由于历史原因或者其他原因,我们可能需要将一个 Vue 组件转换成一个 React 组件。

    6 年前

相关推荐

    暂无文章