浏览器如何加载网站

浏览器如何加载网站

HTTP 响应中通常包含哪些文件?

回顾上一篇介绍的现代网页技术,一个网页请求的 HTTP 响应中通常会包含以下一种或多种文件类型:

HTML 文件:定义网页的内容与结构。

CSS 文件:控制网页的样式与布局。

JavaScript 文件:实现网页的交互行为。

媒体资源:如图片、视频、音频、PDF 或 SVG,可直接嵌入页面或由浏览器展示。

其他类型文件:例如 Word 文档、PowerPoint 幻灯片、Open Office 文件等,浏览器无法直接处理,通常会调用系统中相应的应用程序打开。

网页渲染过程

当用户访问一个新网页(比如点击链接或输入网址)时,浏览器会发出多个 HTTP 请求,并接收到 HTTP 响应中的多个文件。浏览器会处理这些文件,将它们组合成一个可交互的网页。这个过程称为渲染。

下面我们从高层次来理解浏览器渲染网页的基本步骤。注意,不同浏览器的实现细节可能有所不同,但核心流程大致相似。

处理 HTML

浏览器首先收到 HTML 文件,并将其解析成一棵DOM 树(文档对象模型)。DOM 以树状结构在内存中表示整个 HTML 文档的层次关系。例如下面这段简单的 HTML:

html

Let's use:

HTML

CSS

JavaScript

每个标签、属性和文本都会成为树结构中的一个 DOM 节点。节点之间通过父子、兄弟关系相互关联。节点通过其与其他 DOM 节点的关系来定义。某些元素是子节点的父节点,而子节点之间存在兄弟节点关系。以上面的 HTML 为例,浏览器将解析此 HTML 并据此创建以下 DOM 树:

P

├─ "Let's use:"

├─ SPAN

| └─ "HTML"

├─ SPAN

| └─ "CSS"

└─ SPAN

└─ "JavaScript"

在这棵 DOM 树中,

元素对应的节点为父节点。其子节点包含一个文本节点和三个 元素对应的节点。而这些 SPAN 节点同样也是一些文本节点的父节点。浏览器渲染的 DOM 树大概长这样:

p {

margin: 0;

}

在解析 HTML 过程中,如果遇到以下元素,浏览器会发起额外的 HTTP 请求来获取外部资源:

引用的外部 CSS 样式表。