Javascript 增加并发HTTP调用
我为此浏览了很多帖子,但没有找到任何合适的解决方案 我从一个关于最大并发连接到一个域限制的答案中得到了它Javascript 增加并发HTTP调用,javascript,jquery,ajax,http,browser,Javascript,Jquery,Ajax,Http,Browser,我为此浏览了很多帖子,但没有找到任何合适的解决方案 我从一个关于最大并发连接到一个域限制的答案中得到了它 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 1
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-限制为两个。如果你是宽带用户,IE8是6;如果你是宽带用户,IE8是2
我们正在拨号
但我没有这样的场景。我正在获取指向一个web服务器的特定数据。我将如何克服这一点
我在启动时有14个http调用到同一个服务器,这就是加载实际页面需要很长时间的原因。如何通过并发ajax/http调用提高网站性能
您可以做的是将该负载分派到许多子域。不只是使用www,而是在这些客户端之间使用www1、www2、www3、www4和循环
您需要配置您的web服务器,以便www*子域最终到达相同的位置。仅扩展Charly Koza的回答,因为这有一些限制,取决于用户数量等 您应该首先考虑使用CDN,我假设您已经这样做了 事实上,您只访问一台服务器不是问题,浏览器将允许基于DNS主机而不仅仅是IP的并发连接 如果您有权访问DNS管理,并且可以动态生成一个新的子域,请使用CloudFlare的API等免费服务 或者,创建一个通配符域,允许任何子域指向一台服务器。 通过这种方式,在服务器端,您可以确定用户是否已经有X个数量的连接处于活动状态,如果是,则可以执行以下场景:
- 在同一IP上动态创建一个新子域,或者如果使用通配符,则创建一个随机子域
newDomainRandom.domain.com
- 然后返回 用户a 301重定向到新域,用户Internet客户端将 然后将其注册为与另一个域的新连接
HTTP/2在单个连接上多路传输多个HTTP请求,请参阅。当HTTP/1.1的限制大约为6-8时,HTTP/2没有标准限制,但表示“建议此值(设置最大并发流)不小于100”()。这个数字比6-8好 14个请求不是问题。只有当服务器响应时间很长时,它才会成为问题。因此,根本问题很可能是服务器端性能 这些解决方案是可能的:
- 使用HTTP缓存(服务器应发送相应的头)
- 在中间使用缓存(例如CDN、清漆)
- 优化服务器端
- 内容相关:
- 将多个请求合并为一个请求
- 删除请求中的重复信息
- 不要加载客户端不呈现的信息
- 在服务器端使用缓存
- 等等。。。任何其他方法。。。他们有很多
- 内容相关:
更新: 建议那些不得不下载静态资源并且有问题的人
<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请求时,它可能会为您节省数百毫秒
另见:
- 只需使用Http2即可。Http1对并发连接有一个限制,具体取决于6-10个浏览器。如果您的服务器能够并发执行任务,那么打开多个连接对它没有任何附加价值,除了能够提前(在最慢的任务完成之前)更新UI。例如,允许用户在所有任务完成之前使用该页面。这提供了良好的用户体验
但是,除了打开并行http连接之外,还有其他解决方案可以实现这一点。简而言之,您可以合并所有y