Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 增加并发HTTP调用_Javascript_Jquery_Ajax_Http_Browser - Fatal编程技术网

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客户端将 然后将其注册为与另一个域的新连接
这里有很多伪工作,但这更多的是一个网络问题,而不是一个编码问题

但必须警告此方法:

在站点上使用301重定向没有限制。你可以 执行超过100k的301重定向而不会受到任何处罚。 但是:太多的301重定向会给服务器和服务器带来不必要的负载 减速

如何调用超过浏览器设置的最大http调用数的1 域

这是HTTP/1.1限制(6-8),如果您能够更改服务器(将此问题标记为HTTP),最好的解决方案是使用()而不是HTTP/1.1


HTTP/2在单个连接上多路传输多个HTTP请求,请参阅。当HTTP/1.1的限制大约为6-8时,HTTP/2没有标准限制,但表示“建议此值(设置最大并发流)不小于100”()。这个数字比6-8好

14个请求不是问题。只有当服务器响应时间很长时,它才会成为问题。因此,根本问题很可能是服务器端性能

这些解决方案是可能的:

  • 使用HTTP缓存(服务器应发送相应的头)
  • 在中间使用缓存(例如CDN、清漆)
  • 优化服务器端
    • 内容相关:
      • 将多个请求合并为一个请求
      • 删除请求中的重复信息
      • 不要加载客户端不呈现的信息
    • 在服务器端使用缓存
    • 等等。。。任何其他方法。。。他们有很多

更新:

建议那些不得不下载静态资源并且有问题的人

  • 检查资源的大小并尽可能优化

  • 使用HTTP2-它在请求之间共享连接,所以服务器的负载会更少,响应速度也会更快,主要是因为它不需要为每个请求建立单独的SSL连接(网络是安全的,nova days,每个人都使用HTTPS)

  • HTTP规范将并行请求的数量限制为单个域。这样就有机会增加使用多个不同域(或子域)下载所需资源的并行请求数

  • 我有一个数据驱动的应用程序。。。我有谷歌地图,透视图,图表和网格

    在您提到的评论中,数据来自不同的提供商,如果这些提供商位于不同的域上,请尝试使用dns预取,例如:

       <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