赞
踩
还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;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+】 |
请求网页的整个渲染过程可以分为多个阶段,从用户在浏览器中输入网址到页面最终呈现在屏幕上,大致流程如下:
用户输入网址:
用户在浏览器地址栏输入网址(Uniform Resource Locator, URL),按下回车键发起请求。
域名解析(DNS 查询):
浏览器首先需要将输入的域名转换为对应的IP地址。这个过程通过DNS查询来完成,浏览器向DNS服务器发送查询请求,获取目标服务器的IP地址。
建立TCP连接:
获取到服务器IP地址后,浏览器通过TCP/IP协议与服务器建立连接。这通常涉及到TCP的三次握手过程,目的是为了建立一个稳定可靠的传输通道。
发送HTTP请求:
连接建立后,浏览器构造HTTP请求报文,其中包括请求行(方法、URL、协议版本)、请求头(如User-Agent、Accept-Language、Cookie等)、以及可能存在的请求体(比如POST请求中的数据)。
服务器处理请求:
服务器接收到请求后,根据请求的URL和HTTP方法执行相应的操作,如读取文件、执行脚本或数据库查询等,并准备HTTP响应。
返回HTTP响应:
服务器将生成的响应报文(包括状态码、响应头、响应体)通过TCP连接发送给浏览器。
浏览器接收响应:
浏览器接收到响应报文后,开始解析响应内容。如果是HTML文件,就进入页面渲染阶段。
解析HTML:
浏览器首先解析HTML内容,构建Document Object Model (DOM) 树,这是一个内部表示形式,用于表示文档的所有元素和它们之间的层级关系。
解析CSS:
同时,浏览器解析CSS样式表,构建CSS Object Model (CSSOM) 树,记录样式信息。
构建渲染树(Render Tree):
将DOM树和CSSOM树结合,构建渲染树。渲染树包含了所有可视节点及其计算后的样式信息。
布局(Layout / Reflow):
浏览器根据渲染树计算每个节点在屏幕上的确切位置和大小,这个阶段也被称为“布局”或“重排”。
绘制(Painting):
有了布局信息后,浏览器按照从后往前的顺序绘制各节点,包括文本、颜色、图像等,这个过程叫做“合成”或“绘制”。
重绘(Repaint)和重排(Reflow):
如果在渲染过程中有样式变化导致布局改变,浏览器可能需要重新进行布局和绘制工作。
增量渲染与交互反馈:
在某些情况下,浏览器会采用增量渲染的方式,优先展示可见内容,随后逐步加载和渲染剩余部分。同时,对于用户的交互操作(滚动、点击等),浏览器会实时调整渲染树和布局,给出及时的反馈。
资源加载:
浏览器并行加载页面所需的其他资源,如图片、字体、JavaScript文件等。JavaScript可能会修改DOM或CSSOM,进而影响渲染结果,因此在执行JavaScript的同时,浏览器会监控可能引发的变化并适时重排和重绘。
页面加载完毕:
当主文档加载完毕,所有资源加载和渲染工作完成后,浏览器呈现完整页面给用户。
以上整个过程涉及到复杂的调度算法、缓存机制、并发处理和异步加载等技术手段,确保页面高效、准确地渲染和交互。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。