我在SO上经历了很多帖子,但没找到任何合适的解决方案
我从其中一个答案中得到了最大并发连接到一个域限制
IE 6 and 7: 2
IE 8: 6
IE 9: 6
IE 10: 8
IE 11: 8
Firefox 2: 2
Firefox 3: 6
Firefox 4 to 46: 6
Opera 9.63: 4
Opera 10: 8
Opera 11 and 12: 6
Chrome 1 and 2: 6
Chrome 3: 4
Chrome 4 to 23: 6
Safari 3 and 4: 4
如何调用超过浏览器设置的最大http调用到一个域。
我经历了这个
您可以使用一种技巧来增加并发同意的数量 是从不同的子域托管您的图像。这些将是 作为单独的请求处理,每个域都将被限制 并发最大值。
IE6,IE7 - 限制为2。如果你是宽带,IE8是6,如果是你,则是2 拨号。
但我没有这样的情景。我正在获取指向一个Web服务器的特定数据。我将如何克服这一点。
我在启动时有14个http调用到同一个服务器,这是加载实际页面需要很长时间的原因。如何通过并发ajax / http调用来提高我网站的性能
答案 0 :(得分:9)
您可以做的是将负载分配给多个子域。您可以在这些客户端之间使用www1,www2,www3,www4和循环法,而不是仅使用www。
您需要配置您的网络服务器,以便www *子域最终到达同一位置。
答案 1 :(得分:7)
14个请求不是问题。仅当服务器响应时间长时才成为问题。所以最可能的根本问题是服务器端性能
这些解决方案是可能的:
答案 2 :(得分:5)
只是扩展了Charly Koza的答案,因为这取决于用户数量等有一些限制。
首先要注意的是使用CDN,我假设您已经完成了此操作。
事实上,您只击中一台服务器就不是问题,浏览器将允许基于DNS主机(而不仅仅是IP)的并发连接。
如果您可以访问DNS管理并可以动态生成新的子域,请使用CloudFlare API之类的免费服务。
或者,创建一个通配域,该通配域将允许任何子域指向1个服务器。
通过这种方式,您可以在服务器端确定用户是否已经有X个活动的连接,如果这样,则可以完成以下情形:
newDomainRandom.domain.com
这里有大量的伪工作,但这更多的是网络问题,而不是编码问题。
对此方法有强制警告:
在网站上使用301重定向没有限制。您可以 实施超过100k的301重定向,而不会受到任何惩罚。 但是:太多的301重定向给服务器带来了不必要的负载,并且 降低速度。
答案 3 :(得分:5)
如何拨打超过浏览器设置为一个的最大http通话次数 域。
这是HTTP / 1.1的限制(6-8),如果您能够更改服务器(将此问题标记为http),则最佳解决方案是使用HTTP/2(RFC 7540)而不是HTTP / 1.1。
HTTP / 2在单个连接上多路复用许多HTTP请求,请参见this diagram。当HTTP / 1.1的限制大致为6-8时,HTTP / 2没有标准限制,而是说“ 建议此值(SETTINGS_MAX_CONCURRENT_STREAMS)不小于100 “ (RFC 7540)。这个数字好于6-8。
答案 4 :(得分:0)
我有一个数据驱动的应用程序。 ...我有谷歌地图,数据透视图,图表和网格
在评论中,您提到数据来自不同的提供程序,以防它们位于不同的域中-请尝试使用dns-prefetch,即:
<link rel="dns-prefetch" href="http://www.your-data-domain-1.com/">
<link rel="dns-prefetch" href="http://www.your-data-domain-2.com/">
<link rel="dns-prefetch" href="http://www.3rd-party-service-1.com/">
<link rel="dns-prefetch" href="http://www.3rd-party-service-2.com/">
您需要列出所有通过AJAX调用的域,而不是您网站本身的实际域。
它将强制浏览器在读取和解析该HTML数据后立即发送DNS请求,而不是在您的代码首次从这些域请求数据时发送该请求。当浏览器实际对数据进行AJAX请求时,它最多可以节省几百毫秒。
另请参阅:
答案 5 :(得分:0)
只需使用Http2。 Http1对并发连接有限制,具体取决于浏览器的6-10。
答案 6 :(得分:0)
如果服务器能够同时执行任务,则打开服务器的多个连接没有附加价值,除了能够较早地更新UI(在完成最慢的任务之前)。例如。要在所有任务完成之前使用户能够使用页面。这样可以提供良好的用户体验。
但是,除了打开并行http连接以外,还有其他解决方案。简而言之,您可以将所有端点合并到一个处理所有任务的端点下,然后将每个已完成任务的结果异步地放置到响应中。然后,客户端可以在每个任务完成时处理结果。
要实现上述目标,您需要在HTTP连接或已升级到websocket的连接上运行的一些简短的protocol / api。下面是提供异步响应消息功能的一些替代方法: