在Firefox 3中,每个域的答案是6:只要触发到同一个域的第7个XmlHttpRequest(在任何选项卡上),它就会排队,直到其他6个完成.
其他主流浏览器的数字是多少?
此外,有没有办法绕过这些限制而不让我的用户修改他们的浏览器设置?例如,jsonp请求的数量是否有限制(使用脚本标记注入而不是XmlHttpRequest对象)?
背景:我的用户可以从网页向服务器发出XmlHttpRequests,要求服务器在远程主机上运行ssh命令.如果远程主机关闭,ssh命令将花费几分钟时间失败,最终阻止我的用户执行任何进一步的命令.
我被要求建立一个网站,其中一位联合开发人员告诉我,我需要包含keep-alive标头.
好吧,我读了很多关于它,但我仍有疑问.
当客户端对网页内容发出多个请求时,打开连接可提高性能,因为服务器可以更快地返回每个请求的内容.否则,服务器必须为每个请求打开一个新连接
看着

keep alive头(或用户发送保活),岂不是(E,C,B)保存这仅仅是我的会话的连接?对于那些感兴趣的人:
单击此示例页面将返回keep alive标头
如果我将图像(jpg或png)转换为base64,那么它会更大,还是会有相同的大小?会有多大?
是否建议在我的网站上使用base64编码的图像?
我正在开发一个应用程序(winforms C#.NET 4.0),我通过简单的HTTP请求从第三方访问查找功能.我用一个参数调用一个url,作为回报,我得到一个带有查找结果的小字符串.很简单.
然而,挑战是,我必须做很多这些查找(成千上万),我想限制所需的时间.因此,我想并行运行请求(例如10-20).我使用ThreadPool来做到这一点,我的代码的简短版本如下所示:
public void startAsyncLookup(Action<LookupResult> returnLookupResult)
{
this.returnLookupResult = returnLookupResult;
foreach (string number in numbersToLookup)
{
ThreadPool.QueueUserWorkItem(lookupNumber, number);
}
}
public void lookupNumber(Object threadContext)
{
string numberToLookup = (string)threadContext;
string url = @"http://some.url.com/?number=" + numberToLookup;
WebClient webClient = new WebClient();
Stream responseData = webClient.OpenRead(url);
LookupResult lookupResult = parseLookupResult(responseData);
returnLookupResult(lookupResult);
}
Run Code Online (Sandbox Code Playgroud)
我从另一个地方填写numbersToLookup(a List<String>),打电话startAsyncLookup并提供回叫功能returnLookupResult以返回每个结果.这有效,但我发现我没有得到我想要的吞吐量.
最初我认为它可能是第三方的系统结构很差,但我通过尝试同时从两台不同的机器运行相同的代码来排除这种情况.两个人中的每一个都花了一个人,所以我可以排除那一个.
然后一位同事告诉我,这可能是Windows的限制.我google了一下,发现这篇帖子说默认情况下,Windows将同一个Web服务器的同时请求数量限制为HTTP 1.0为4,HTTP 1.1为2(对于HTTP 1.1,这实际上是根据规范( RFC2068)).
上面提到的同一篇文章也提供了增加这些限制的方法.通过向[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings](MaxConnectionsPerServer和MaxConnectionsPer1_0Server)添加两个注册表值,我可以自己控制它.
所以,我尝试了这个(坐到20),重新启动我的电脑,并试图再次运行我的程序.可悲的是,它似乎没有任何帮助.我在运行批量查找时也一直关注资源监视器(参见屏幕截图),我注意到我的应用程序(标题为黑屏的应用程序)仍然只使用了两个TCP连接.
所以,问题是,为什么这不起作用?我使用错误的注册表值链接的帖子是?这可能不再可能在Windows中"破解"(我在Windows 7上)? …
构建一个Ionic应用程序突然遇到一个我发现很难调试的问题,浏览器"推迟"长时间运行的计时器任务导致我的视图只在其控制器中执行一次代码(即使控制器显式重新加载).
警告是:
延迟长时间运行的计时器任务以提高滚动平滑度.见crbug.com/574343.
我在追求的是什么:
提前致谢.
更新 我觉得重要的是要注意,虽然从来没有收到错误,只有警告作为我的问题的原因,我已经回到了工作版本.
此工作版本仍然出现警告但不影响我的应用程序的运行.
在典型的网页上,我从CDN加载以下内容:
从1 CDN(如果可能)或从不同的CDN加载这些更好吗?是否有最佳实践,或者它没有什么区别?
我最近发现Chrome的连接数限制为6(Chrome在传输一定数量的数据后挂起 - 等待可用的套接字),不幸的是,我在加载后通过"等待可用的套接字"消息发现了这一点.太多标签(7).
我知道这是Chrome,因为另一个Chrome用户(也就是另一个浏览器会话)同时在同一台计算机上完全加载网页(我的计算机上打开了多个Chrome用户).所以它不是服务器的任何方式.
我相信这是因为,在socket.io(我用于通知)中,我是xhr-polling,这导致Chrome必须等到它可以从其中一个连接中获取套接字才能处理页面.
这是什么解决方案?
我想到了几个解决方案:
作为一个补充点:我从一开始就没有使用websockets的原因是因为我使用了cloudflare.但如果这是解决问题的方法那么:就这样吧.
如果这意味着页面大小下降,那么在什么时候更好地拥有更多HTTP请求?例如,如果我有一个20KB的图像,在使用两个图像更有意义之前我需要减少多少尺寸?
我正在尝试完成关于当前(2011)主要浏览器的每个服务器的最大并发HTTP/1.1连接的默认值*的官方文档引用列表.
这是我到目前为止所得到的:
我认为我列出的大多数(如果不是全部)默认值都应该是正确的,但我更愿意有官方文档参考证明这一点.
有人知道这样的官方文件参考吗?
任何帮助将不胜感激.
*如何通过注册表/控制台调整此值,或者如何通过CDN/CNAME进行优化不是此问题的目标.
我正在使用SignalR在asp.net中实现聊天,但是当我打开我的Web应用程序的多个选项卡时,我正在 "等待可用的套接字......".
我已经实现了Performance Tuning SignalR上指定的所有设置,但我的问题没有得到解决.
我该如何解决这个问题?
http ×3
angularjs ×2
browser ×2
c# ×2
performance ×2
ajax ×1
asp.net ×1
base64 ×1
cdn ×1
css ×1
html ×1
http-headers ×1
image ×1
javascript ×1
jquery ×1
keep-alive ×1
signalr ×1
socket.io ×1
websocket ×1