首先考虑一下,即使是一个简单的网页也是由许多
独立的文件和资源组成的。有 、CSS、JavaScript、图像等等。这些文件中的每一个都可以被视为一个简单的“二进制 blob”——浏览器以某种方式解释的零和一的集合。通过网络发送这些文件时,我们不会一次性传输所有文件。相反,它们被细分为较小的块(通常每个块约 1400 字节)并以单独的 手机号数据库列表 数据包发送。因此,我们可以将每个资源视为一个单独的“字节流”,因为数据随着时间的推移被下载或“流式传输”。
对于 /1.1,资源加载过程非常简单,因为每个文件都有自己的 TCP 连接并完整下载。例如,如果我们有文件 A、B 和 C,则我们将拥有三个 TCP 连接。第一个会看到 AAAA 字节流,第二个是 BBBB,第三个是 CCCC(每个字母重复都是一个 TCP 数据包)。这是可行的,但效率也非常低,因为每个新连接都有一些开销。
在实践中,浏览器对可以使用的并发连接数量(以及因此可以并行下载的文件数量)施加限制 - 通常,每个页面加载 6 到 30 个连接。一旦前一个文件完全传输,连接就会被重新使用来下载新文件。这些限制最终开始阻碍现代页面的 Web 性能,这些页面通常会加载 30 多个资源。
改善这种情况是 /2 的主要目标之一。该协议通过不再为每个文件打开新的 TCP 连接,而是通过单个 TCP 连接下载不同的资源来实现这一点。这是通过“复用”不同的字节流来实现的。
http://americaphonenumber.com/wp-content/uploads/2023/08/越南电话号码表.png
这是一种奇特的说法,我们在传输时混合不同文件的数据。对于我们的三个示例文件,我们将获得单个 TCP 连接,并且传入数据可能看起来像 AABBCCAABBCC(尽管许多其他排序方案也是可能的)。这看起来很简单,而且确实工作得很好,使得 /2 通常与 /1.1 一样快或稍快一点,但开销要少得多。
页:
[1]