为什么Chrome开发者工具显示超过6个同时的Ajax请求?

5
根据这个和其他十几个不同的来源,Chrome和大多数浏览器限制每个域名同时进行HTTP请求的数量为六个。
那么我到底在这里看到了什么呢? 18 simultaneous ajax requests 难道不是18个同时的ajax请求吗?
以下是一些时间详细信息:
第一个请求: First request is mostly waiting 第八个请求: The eighth request is mostly waiting 我查看的所有请求都反映出类似的情况。
到底发生了什么?!

根据您提供的链接信息,您是否检查过请求是否为HTTP/1.0? - Russell Zahniser
或者,如果您查看定时详细信息选项卡,后续请求是否在阻塞状态下花费了一些时间? - Russell Zahniser
请点击请求的名称,然后点击“Headers”或“Timing”选项卡以检查这些内容。 - Russell Zahniser
@RussellZahniser,正如您在我的编辑中所看到的,时间轴没有显示任何阻塞或排队情况(它只是反映了第一个图表中的内容)。然而,我注意到,如果我将鼠标悬停在时间轴上的任何一个条形图上,它会显示端到端总计比部分之和要大得多。 - George Mauer
1
这是一个fiddle来测试此功能。对于我来说,在Mac上使用Chrome,它正好做你所期望的事情(六个请求立即发送,其余请求被阻止)。如果没有看到您的代码,我无法知道为什么您的情况会不同。 - Russell Zahniser
@RussellZahniser 好的,这样就比较清楚了,如果你在fiddle上查看网络选项卡,时间轴视图显示的是排队时间,而不是连接时间。在你的示例fiddle中,响应等待2秒,因此总时间(通过悬停时间轴)分别为2秒、4秒、6秒,时间轴详细信息显示等待2秒。在我的情况下,请求需要大约650毫秒,延迟似乎不太大。如果您可以将其编辑到您的答案中,我会将其标记为正确。 - George Mauer
1个回答

4

请求的时间轴开始于请求被排入队列的时间,而不是发送的时间。如果您检查某个后续请求的计时(通过点击名称,然后选择 Timing 选项卡),您可能会发现在发送前它被阻塞了一段时间。

code

这里有一个演示,展示了此项功能。请求以六个为一批发送:

网络时间轴

... 而后续的请求在发送前会显示阻塞时间:

一批请求的时间详细信息


据我所知,大多数请求都会花费几毫秒的时间发送,等待数百毫秒,然后再花费几毫秒的时间接收 - 就像您预期的常规非排队的HTTP请求一样。 - George Mauer
很奇怪,我仍然不理解那个阻塞栏,但当我在时间图表中悬停在整个栏上时,我得到了类似的数字。 - George Mauer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接