【问题标题】:jquery ajax sends only 6 requests simultaneously [duplicate]jquery ajax同时仅发送6个请求[重复]
【发布时间】:2017-01-23 19:05:44
【问题描述】:

这是我的小服务程序

public class TestServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        LogFactory.getLog(getClass()).info(req.getParameter("number"));
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}

现在我在浏览器中执行下面的js

console.clear();
for (var i = 0; i < 12; i++) {
  $.ajax('/test', {
    data: {
      number: i
    }
  });
}

结果是:

2016-09-15 19:35:26 INFO  TestServlet:17 - 0
2016-09-15 19:35:26 INFO  TestServlet:17 - 2
2016-09-15 19:35:26 INFO  TestServlet:17 - 1
2016-09-15 19:35:26 INFO  TestServlet:17 - 3
2016-09-15 19:35:26 INFO  TestServlet:17 - 4
2016-09-15 19:35:26 INFO  TestServlet:17 - 5
2016-09-15 19:35:28 INFO  TestServlet:17 - 8
2016-09-15 19:35:28 INFO  TestServlet:17 - 6
2016-09-15 19:35:28 INFO  TestServlet:17 - 7
2016-09-15 19:35:28 INFO  TestServlet:17 - 11
2016-09-15 19:35:28 INFO  TestServlet:17 - 10
2016-09-15 19:35:28 INFO  TestServlet:17 - 9

您可以看到 6 个请求在 19:35:26 到达,其他 6 个请求在 19:35:28 到达

我使用默认的 Tomcat 和 jquery 设置。为什么会发生这种情况?有什么办法可以配置吗?

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    浏览器一次限制为 6 个 ajax 请求。您可以通过将端点分隔到不同的子域来欺骗它,但这有点超出了问题的范围。我认为您无法在浏览器中做任何事情来改变这一点。

    编辑:查看 cmets,不同的端口也应该可以工作

    【讨论】:

    • 还有不同的端口!
    【解决方案2】:

    浏览器对发送ajax请求有限制,使用池和队列来发送。

    所以是的,没有规则。如果保存订单很重要,请使用async:false,但它对用户界面的影响非常糟糕。

    【讨论】:

      猜你喜欢
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 2017-01-14
      • 2013-03-31
      • 2015-06-05
      • 2012-03-30
      相关资源
      最近更新 更多