Google chrome devtools Chrome开发者工具连接ID

Google chrome devtools Chrome开发者工具连接ID,google-chrome-devtools,Google Chrome Devtools,我正在使用Chrome开发者工具(49版)。在“网络”选项卡下,有一系列列,如名称、状态、类型等。有人知道连接ID列的用途吗?每行都有一个ID,如13461、14410、8738、8741、13516。。。。这些数字意味着什么 connectionId是用于该查询/TCP连接等的连接的唯一标识符。它是评估哪些资源正在使用哪个连接的一种方法 如果按顺序对该列进行排序,您将看到许多重复的ID,表明许多资源是在同一TCP连接上获得的。HTTP在后台使用称为TCP的网络协议。浏览器维护TCP套接字和连接

我正在使用Chrome开发者工具(49版)。在“网络”选项卡下,有一系列列,如名称、状态、类型等。有人知道连接ID列的用途吗?每行都有一个ID,如13461、14410、8738、8741、13516。。。。这些数字意味着什么

connectionId
是用于该查询/TCP连接等的连接的唯一标识符。它是评估哪些资源正在使用哪个连接的一种方法


如果按顺序对该列进行排序,您将看到许多重复的ID,表明许多资源是在同一TCP连接上获得的。

HTTP在后台使用称为TCP的网络协议。浏览器维护TCP套接字和连接池。DevTools中的连接ID号表示特定的TCP连接。为什么它们有用?嗯,来自Umar Hamsa(谷歌开发专家):

金丝雀中新的连接ID网络面板列可以帮助您指示TCP连接被重用,而不是握手和建立新连接

让我解释一下这意味着什么:

  • 第一次看到特定的连接ID时,可能需要通过所谓的TCP握手建立新的连接。出于性能原因,这一点很重要,因为TCP握手可能会产生相对较大的网络开销。我们正在创建一个新连接,因此需要更长的时间才能获得HTTP响应

  • 但是,对于看到相同ID的后续时间,不会产生此开销。也就是说,浏览器不需要执行TCP握手,并且将重用相同的连接。这里我们说TCP连接仍然“打开”。已经建立的连接可以更快地获取HTTP响应数据

因此,这些数字基本上有助于检查/调试是否存在由TCP握手引起的网络开销


例如:

Name      Connection ID    (TCP Handshake / Reused Connection)
foo.jpg   72218            Handshake
bar.jpg   72218            Reused
cat.jpg   79146            Handshake
baz.jpg   72218            Reused
dog.jpg   79146            Reused
在这里,下载
foo.jpg
cat.jpg
会带来开销,因为分别需要TCP握手来建立连接
72218
79146
。但是,
bar.jpg
baz.jpg
dog.jpg
没有开销,因为它们正在重用各自的TCP连接


注1:这种重用TCP连接以避免重复TCP握手的想法是HTTP 1.1的一个特性,称为。默认情况下,所有HTTP 1.1连接都使用持久连接,而所有现代浏览器都使用HTTP 1.1。要了解更多信息,我建议阅读本书的第11章和第14章

注2:如果HTTP请求需要TCP握手,您将在DevTools瀑布中看到一个橙色条,如果将鼠标悬停在该条上,您将看到“初始连接”-这将告诉您握手所用的时间(毫秒)。TCP连接可以跨选项卡和窗口重复使用,因此请注意——您可能第一次看到ID,但它可能没有TCP握手!这可能是因为您以前访问过该页面并打开了与该主机的连接。这也可能是因为Chrome从主机预取了一个资源——例如,当你在栏中键入地址时,Chrome会预取一个favicon

注3:在较新版本的Chrome中,您可以在以下位置查看HTTP连接列表:chrome://net-internals/#http2 其中显示连接id和主机