我正在创建一些到HTTP服务器的暂停连接(彗星,反向ajax等).它工作正常,但我看到浏览器只允许两个同时挂起到给定域的连接.因此,如果用户在浏览器的Tab1中查看我的网站,那么也尝试在Tab2中加载它们,他们已经用尽了两个允许的连接到我的网站.
我想我可以做一些通配域的东西,我有我的http服务器解析我的网站的任何地址,如:
*.example.com/webapp -> 192.0.2.1 (the actual ip of my server)
Run Code Online (Sandbox Code Playgroud)
所以:
a.example.com/webapp
b.example.com/webapp
c.example.com/webapp
Run Code Online (Sandbox Code Playgroud)
所有仍然指向(www.example.com/webapp)但浏览器认为它们是不同的域,所以我没有遇到2连接限制.这是真的?
即使这是真的 - 所有域中每个浏览器的活动连接数是否有限制?假设我使用上面的方案 - 例如,Firefox在任何给定时间只允许24个并行连接吗?就像是:
1) a.example.com/webapp
2) www.download.example/hugefile.zip
3) b.example.com/webapp
4) c.example.com/webapp
...
24) x.example.com/webapp
25) // Error - all 24 possible connections currently in use!
Run Code Online (Sandbox Code Playgroud)
我刚刚选择了24个连接/ Firefox作为示例.
html web-applications http persistent-connection web-performance
我有一个浏览器游戏,我最近开始在游戏中添加音频.
Chrome不会加载整个页面并且卡住"91 requests | 8.1 MB transferred"并且不会加载任何更多内容,甚至会在所有其他标签中对网站进行制动Waiting for available socket.
5分钟后(确切地)加载数据.


这不会发生在任何其他浏览器上.
删除一个MP3文件(最新添加的一个)修复了问题,所以我猜它是一个数据限制问题?
根据HTTP规范(w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4),HTTP客户端应限制其连接:
使用持久连接的客户端应该限制它们维护到给定服务器的同时连接数.单用户客户端不应该与任何服务器或代理保持2个以上的连接.
不同的供应商以不同的方式实施此限制:http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/
但.这个限制适用于每个选项卡,每个浏览器实例还是全局适用于浏览器的所有实例?弹出窗口(对话框)是否被视为选项卡或独立选项卡的一部分?
对于websockets,每个源的连接限制是否适用于每个选项卡,浏览器实例或全局?
背景
我注意到几乎所有的代理提供程序都允许“最大线程数”的概念,根据我的理解,这意味着一次并发/并行浏览器请求的最大数量。由于现代网站可以有许多并行请求,我如何在 Chrome 中限制并行请求(全局针对整个浏览器,不仅针对每个主机/服务器,而且针对所有这些请求的组合)?
例子
网站 A 从自己的域中获取资源,此外还使用了 9 个 CDN 和 10 个跟踪器。假设 Chrome 有最多 6 个并发请求/域,所以这是 120 个并发请求。高于此的任何事情都必须等待轮到它。例如,我想将其限制为最多 10 个。
笔记
我已经看到在 Firefox 中可以使用“ network.http.max-connections ”来完成,但我没有找到适用于 Chrome 或 Chromium 的任何东西。
如果有帮助,我正在使用 Selenium 和 ChromeDriver (C#) 来启动浏览器。
我在使用 Chrome 时遇到了一个随机问题(Linux 上的 v60.0.3112.101,但最终用户在其他系统的生产中也重现了这一问题)。有一个页面包含歌曲列表,单击其中任何歌曲都会触发 ajax 请求以获取服务器上的文件(除其他外)。
经过一定次数的“点击”(从来没有相同的次数,从来没有在同一个文件上),应该获取资源的ajax请求永远显示为“待处理”(我已经等待了30多分钟才完成) )。
在开发人员工具面板的“计时”选项卡中,请求显示为“停滞”,实际上,Nginx 日志(我们将其用作反向代理)和后端应用程序本身显示该请求从未到达服务器。
我尝试了几件事但没有成功:
我还尝试从开发人员工具控制台重新运行请求,它也处于待处理状态。
url = "/api/download/songs/7969/28962/28962_original.mp3?download_key=81b285e61f7880a0a07a977dbc47b78a1d57e3690263a646da65a261957f979a&r=" + Math.random();
$.get(url);
Run Code Online (Sandbox Code Playgroud)
这个问题在 Firefox 上似乎没有发生。
不幸的是,我无法向您展示比这更多的代码。
这是 Chrome 的已知错误吗?有任何已知的解决方法吗?
我正在尝试使用录制控制器设置JMeter负载测试.
这导致重复Web浏览器将进行的所有调用 - 包括css文件,js文件和图像.
鉴于Web浏览器将同时获取这些内容(同时执行大约10个Web请求).jmeter文档倾向于将1个用户等同于1个线程 - 但这与现代Web浏览器的工作方式不一致.
在设置负载测试时,是否需要为每个用户使用10个线程?
假设我没有Grid设置,我可以从Selenium WebDriver启动的最大并发Chrome线程数是多少?
是5吗?而且对Chrome Headless也适用吗?
connection selenium http persistent-connection httpconnection
http ×4
selenium ×2
ajax ×1
browser ×1
chromium ×1
connection ×1
html ×1
javascript ×1
jmeter ×1
networking ×1
proxy ×1
sockets ×1
streaming ×1
websocket ×1