我使用的是Chrome开发者工具(第49版)。在“网络”选项卡下,有一系列列,例如“名称”,“状态”,“类型”等。有谁知道连接ID列的用途每一行都有一个ID,例如13461,14410,8738,8741,13516 ......这些数字是什么意思?
答案 0 :(得分:7)
HTTP在后台使用称为TCP的网络协议。浏览器维护TCP套接字和连接池。 DevTools中的连接ID 编号指的是特定的TCP连接。它们为什么有用?嗯,来自Umar Hamsa(谷歌开发者专家)的this post:
Canary中新的连接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
涉及开销,因为分别设置连接72218
和79146
需要TCP握手。但是bar.jpg
,baz.jpg
和dog.jpg
没有开销,因为他们正在重复使用各自的TCP连接。
注1:重用TCP连接以避免重复TCP握手的这种想法是HTTP 1.1的一个名为Persistent Connections的功能。默认情况下,所有HTTP 1.1连接都使用持久连接,所有现代浏览器都使用HTTP 1.1。有关详细信息,建议您阅读High Performance Browser Networking本书的第11章和第14章。
注意2:如果HTTP请求需要TCP握手,您将在DevTools瀑布中看到橙色条,如果将鼠标悬停在它上面,您将看到&#34 ;初始连接" - 这告诉你握手花了多长时间。 TCP连接可以在选项卡和窗口之间重复使用,因此请注意 - 您可能第一次看到ID,但可能没有TCP握手!这可能是因为您之前访问过该页面并打开了与该主机的连接。这也可能是因为Chrome从主机预取了资源 - 例如,当您在栏中输入地址时,Chrome会预取一个图标。
注意3:在较新版本的Chrome中,您可以在chrome:// net-internals /#http2中查看HTTP连接列表,其中显示了连接ID和主机。
答案 1 :(得分:2)
connectionId
是用于该查询/ TCP连接等的连接的唯一标识符。它是一种评估哪些资源正在使用哪种连接的方法。
如果按顺序对此列进行排序,您将看到许多重复ID,表明在同一TCP连接上获得了许多资源。