1

我一直在翻阅一些网页性能文章,这些文章都解释说减少加载页面所需的 http 请求数量将减少加载所需的总时间。如果http请求是异步的并且并行发生,我不太明白为什么会这样。

我读过的一篇文章似乎让浏览器故意将它们发出的请求数量限制为单个主机名,我猜这与限制有关,但我还没有找到任何可以确认的东西。

我的直觉表明构建http请求必须在客户端上花费一些时间,因此尽管等待时间是异步的,但每个请求的构建需要一些少量的时间,随着请求数量的增加,这一时间变得很重要。但这只是一种预感。

谁能解释为什么随着http请求的减少性能会提高?

4

3 回答 3

2

每个 HTTP 请求/响应都有巨大的开销。不仅请求和响应都有一个标头块,而且在 tcp/ip 层上也有各种握手和标头,它们强调了 http 协议。

如果您好奇,我建议您安装Wireshark并使用它来检查通过线路传输的网络流量,然后您访问一个典型的网站。这是相当多的。

于 2012-07-05T20:24:21.310 回答
1

每个请求/响应对都包含必须从客户端到服务器生成、传输和处理的 HTTP 标头数据,反之亦然。如果您减少加载页面所需的请求数,则可以减少此开销。

此外,许多浏览器会限制发送到同一主机的并发请求的数量。请参阅用于 FireFox 的 network.http.pipelining.maxrequests 和 network.http.max-connections-per-server 配置参数。当浏览器发出更多请求以加载您的页面时,它将通过管道传输这些请求并可能将更多 TCP 流连接到您的主机。建立连接需要等待三次握手往返,页面加载时间会增加更多。

一个现实生活中的例子:派 5 个人从一个小厨房给你拿一杯加牛奶、糖和勺子的咖啡。只用一个人再试一次。

于 2012-07-05T20:50:20.610 回答
0

HTTP 是同步的——您可以使用 AJAX 等技术使 Web应用程序异步,即您可以向您的页面异步发出 HTTP 请求;但是,一旦您发出 HTTP 请求,您就会坐下来等待响应。

于 2012-07-05T20:15:05.700 回答