使用网络面板进行分析时强制 Chrome 关闭/重新打开所有 TCP/TLS 连接

Posted

技术标签:

【中文标题】使用网络面板进行分析时强制 Chrome 关闭/重新打开所有 TCP/TLS 连接【英文标题】:Force Chrome to close/re-open all TCP/TLS connections when profiling with the Network Panel 【发布时间】:2016-09-07 08:05:49 【问题描述】:

Chrome DevTools 的网络面板非常适合查看不同请求的加载时间。它会分析每个请求和reports how long different parts of the request took, including the time spent making the initial TCP connection and SSL handshake:

(来源:google.com)

当我第一次加载页面时,我看到了初始连接和 SSL 握手所用的时间。 如果我立即重新加载页面,我将看不到任何时间花在初始连接和 SSL 握手上。我认为这是因为 Chrome 已打开先前请求的 TCP 连接并正在重新使用它.这对于正常浏览来说非常有用,但它使分析初始页面加载变得困难。

有什么方法可以强制 Chrome 不重复使用任何现有的 TCP/TLS 连接并始终建立新的连接?

如果不在 Chrome 中,我可以在操作系统级别做些什么来实现这一点吗?我在 Windows 上,如果有什么不同的话。

【问题讨论】:

感谢您提出这个问题!尝试调试预连接让我发疯! 【参考方案1】:

Chrome 检查其套接字池以查看是否有可用的主机名套接字,它可能能够重用 - keep-alive 套接字会在池中保留一段时间,以避免 TCP 握手和慢-开始处罚。如果没有可用的套接字,则它可以启动 TCP 握手,并将其放入池中。然后,当用户发起导航时,可以立即分派 HTTP 请求。 -- High Performance Networking in Google Chrome

导航到 chrome://net-internals#sockets 以查看活动的套接字。如果您单击“关闭空闲套接字”,则下次刷新页面时,它将建立新的连接。

我不确定是否有办法告诉 Chrome 禁用 Connection: keep-alive 标头,但我认为您可以使用像 Modify Headers for Google Chrome 这样的 Chrome 扩展来拦截从客户端发送的标头并在请求之前将其删除到达服务器。

【讨论】:

以上是关于使用网络面板进行分析时强制 Chrome 关闭/重新打开所有 TCP/TLS 连接的主要内容,如果未能解决你的问题,请参考以下文章

Chrome开发者工具:利用网络面板做性能分析

Chrome Network面板工具之万文多图详解

强制地址栏显示在移动 Chrome 应用中

ubuntu 12.04 安装软件时强制关闭,然后网络连接不见了!!!!打开网络管理后,全是灰色的,不能设置。。

如何在 Chrome DevTool 的网络面板中同时按文本和属性进行过滤?

一日一技:使用上下文管理器来强制关闭 Chromedriver