如果请求是异步的,为什么减少页面需要加载的http请求数量可以提高性能?

时间:2012-07-05 20:03:43

标签: performance http

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

我读过的一篇文章似乎让浏览器故意限制他们对单个主机名的请求数量,我猜这与限制有关,但我还没有找到任何要确认的内容。 / p>

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

任何人都可以解释为什么性能会随着更少的http请求而增加吗?

3 个答案:

答案 0 :(得分:2)

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

如果您感到好奇,我建议您安装Wireshark并使用它来检查通过网络传输什么类型的网络流量,然后您访问一个典型的网站。这是非常多的。

答案 1 :(得分:1)

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

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

一个现实生活中的例子:送出5个人,从一个小厨房里拿到一杯加牛奶,糖和勺子的咖啡。再试一次只有一个人。

答案 2 :(得分:0)

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