详解:页面从URL请求到加载完成的整个过程

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

在这里插入图片描述

No. 内容链接
1 Openlayers 【入门教程】 - 【源代码+示例300+】
2 Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3 Cesium 【入门教程】 - 【源代码+图文示例200+】
4 MapboxGL【入门教程】 - 【源代码+图文示例150+】
5 前端就业宝典 【面试题+详细答案 1000+】

在这里插入图片描述

文章目录


在这里插入图片描述

请求网页的整个渲染过程可以分为多个阶段,从用户在浏览器中输入网址到页面最终呈现在屏幕上,大致流程如下:

  1. 用户输入网址
    用户在浏览器地址栏输入网址(Uniform Resource Locator, URL),按下回车键发起请求。

  2. 域名解析(DNS 查询)
    浏览器首先需要将输入的域名转换为对应的IP地址。这个过程通过DNS查询来完成,浏览器向DNS服务器发送查询请求,获取目标服务器的IP地址。

  3. 建立TCP连接
    获取到服务器IP地址后,浏览器通过TCP/IP协议与服务器建立连接。这通常涉及到TCP的三次握手过程,目的是为了建立一个稳定可靠的传输通道。

  4. 发送HTTP请求
    连接建立后,浏览器构造HTTP请求报文,其中包括请求行(方法、URL、协议版本)、请求头(如User-Agent、Accept-Language、Cookie等)、以及可能存在的请求体(比如POST请求中的数据)。

  5. 服务器处理请求
    服务器接收到请求后,根据请求的URL和HTTP方法执行相应的操作,如读取文件、执行脚本或数据库查询等,并准备HTTP响应。

  6. 返回HTTP响应
    服务器将生成的响应报文(包括状态码、响应头、响应体)通过TCP连接发送给浏览器。

  7. 浏览器接收响应
    浏览器接收到响应报文后,开始解析响应内容。如果是HTML文件,就进入页面渲染阶段。

  8. 解析HTML
    浏览器首先解析HTML内容,构建Document Object Model (DOM) 树,这是一个内部表示形式,用于表示文档的所有元素和它们之间的层级关系。

  9. 解析CSS
    同时,浏览器解析CSS样式表,构建CSS Object Model (CSSOM) 树,记录样式信息。

  10. 构建渲染树(Render Tree)
    将DOM树和CSSOM树结合,构建渲染树。渲染树包含了所有可视节点及其计算后的样式信息。

  11. 布局(Layout / Reflow)
    浏览器根据渲染树计算每个节点在屏幕上的确切位置和大小,这个阶段也被称为“布局”或“重排”。

  12. 绘制(Painting)
    有了布局信息后,浏览器按照从后往前的顺序绘制各节点,包括文本、颜色、图像等,这个过程叫做“合成”或“绘制”。

  13. 重绘(Repaint)和重排(Reflow)
    如果在渲染过程中有样式变化导致布局改变,浏览器可能需要重新进行布局和绘制工作。

  14. 增量渲染与交互反馈
    在某些情况下,浏览器会采用增量渲染的方式,优先展示可见内容,随后逐步加载和渲染剩余部分。同时,对于用户的交互操作(滚动、点击等),浏览器会实时调整渲染树和布局,给出及时的反馈。

  15. 资源加载
    浏览器并行加载页面所需的其他资源,如图片、字体、JavaScript文件等。JavaScript可能会修改DOM或CSSOM,进而影响渲染结果,因此在执行JavaScript的同时,浏览器会监控可能引发的变化并适时重排和重绘。

  16. 页面加载完毕
    当主文档加载完毕,所有资源加载和渲染工作完成后,浏览器呈现完整页面给用户。

以上整个过程涉及到复杂的调度算法、缓存机制、并发处理和异步加载等技术手段,确保页面高效、准确地渲染和交互。

相关推荐

  1. 输入URL页面过程

    2024-03-28 17:42:02       45 阅读
  2. 输入url页面过程

    2024-03-28 17:42:02       16 阅读
  3. 输入URL页面渲染过程详解

    2024-03-28 17:42:02       15 阅读
  4. 输入URL页面完中间发生了什么?

    2024-03-28 17:42:02       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-28 17:42:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-28 17:42:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-28 17:42:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-28 17:42:02       20 阅读

热门阅读

  1. 网络安全进入AI赋能时代

    2024-03-28 17:42:02       18 阅读
  2. MySQL高级部分学习笔记总结

    2024-03-28 17:42:02       19 阅读
  3. 国际结算-进口信用证和出口信用证

    2024-03-28 17:42:02       20 阅读
  4. 正则表达式 - 相关的一些基础的范例

    2024-03-28 17:42:02       19 阅读
  5. SpringBoot集成Mysql

    2024-03-28 17:42:02       18 阅读
  6. SOLIDWORKS教育版

    2024-03-28 17:42:02       23 阅读