如何模拟一个没有“Keep alive”的浏览器

我有一个监听端口80的远程web服务器,它通过100 <img />标记来加载100个单独的.png文件(来自相同的服务器和主机名)。 在那个远程服务器上,我watch -n 1 "netstat -na | fgrep ":80 " | fgrep 123.123.123.123" (其中123.123.123.123是我的客户端计算机的外部IP),当我访问我通常看到的那个页面从我的客户端计算机到服务器的5-6个连接。 我使用chrome或者firefox来做这个页面请求,并且通过使用F12开发工具来检查这些请求中的任何一个(页面或者任何png文件),我看到请求头部Connection:keep-alive 。 我也通过查看Web服务器日志证实,所有这些请求都是使用HTTP/1.1 ,我认为这些请求默认使用。

所有上述事实和观察意味着101个请求(1页+ 100 png)经过5-6个连接,而不是通过101个连接。

我的问题是,我怎么能禁用保持在铬或Firefox的活着?

在Firefox中,我尝试在about:config设置以下内容,但是在此行为中并没有改变任何内容:

 network.http.keep-alive.timeout;0 network.http.tcp_keepalive.long_lived_connections;false network.http.tcp_keepalive.long_lived_idle_time;0 network.http.tcp_keepalive.short_lived_connections;false network.http.tcp_keepalive.short_lived_idle_time;0 network.http.tcp_keepalive.short_lived_time;0 network.tcp.keepalive.enabled;false network.tcp.keepalive.idle_time;0 network.tcp.keepalive.retry_interval;0 

如果我必须在O / S级(Windows或Linux)上执行某些操作来禁用活动,使用不同的(甚至是自定义的)浏览器,甚至使用某种可以取消这种行为的Web代理,我都可以。

HTTP保持活动状态意味着客户端向服务器宣告它希望保持打开TCP连接的更多请求,并要求服务器不要closures它。 服务器可能会坚持这个愿望或不。 由于看起来服务器是在你的控制之下,所以只需要禁用服务器上的保持活动状态就可以了,因为这会导致所有浏览器的保持活动状态。 目前还不清楚你有什么样的服务器,但是nginx的相关configuration在这里和Apache在这里 。

但是,尽pipe在服务器上禁用或限制HTTP保持活动是有意义的,以减less使用的资源,但我想知道为什么要在客户端中禁用它。 虽然看到会发生什么情况可能很有趣,但是使用一个浏览器看到的行为将不适用于其他浏览器,并且不适用于确定特定页面的服务器负载,因为即使没有HTTP保持活动状态,浏览器仍将只使用并行连接数量有限,不能并行发送所有请求。 而且,确切的行为取决于浏览器和configuration。

曾几何时,在Firefox中,由于持久连接是HTTP / 1性能最重要的特性之一 ,因此network.http.keep-alive可能不再存在 。

你的network.http.keep-alive.timeout;0不工作,因为不会有空闲时间; 浏览器立即再次使用连接,因为还有更多的文件需要GET

即使没有保持活动function,浏览器可能会很有礼貌,并在最后一次连接结束后开始单独连接,而不是同时打开101个连接。

由于这不是关于保持活动,而是与Firefox同时连接的数量,您可以testingnetwork.http.max-persistent-connections-per-server; 101 network.http.max-persistent-connections-per-server; 101 。 然而,我不太确定它甚至会允许使用一个可笑的高价值…