浏览器在ajax调用时冻结

kai*_*lya 9 .net javascript asp.net-mvc jquery

我有一个ASP.NET Web App.我注意到,虽然正在进行简单的ajax调用(见下文),但Web应用程序不会响应我在其他浏览器上尝试的任何操作.

$.ajax({
        type: "GET",
        async: true,
        url: "someurl",
        dataType: "text",
        cache: false,
        success: function(msg){
            CheckResponse(msg);
        }
    });
Run Code Online (Sandbox Code Playgroud)

当我打开两个Firefox或两个IE时会发生这种情况.我运行在第一个浏览器上执行ajax调用的函数,直到返回ajax的响应,我在同一站点上的第二个浏览器上无法执行任何操作.从第二个浏览器到服务器上没有断点,直到初始ajax完成.它挂起任何点击等..

在第一个浏览器完成ajax调用后,第二个浏览器上的挂起立即结束.

如果我在IE和Firefox上并排尝试相同,则不会出现此行为.只与IE和IE或FF&FF并排发生

如果你能帮我看看我在这里缺少的东西,感激不尽.

Dur*_*oth 2

听起来 Apache(或您运行的任何网络服务器)一次只处理每个客户端的一个请求。处理 Ajax 请求时,Apache 会将来自同一客户端的所有其他请求排队。

此外,当使用两个不同的浏览器时,您的服务器将每个浏览器视为不同的客户端,这意味着它将处理每个浏览器的一个请求。我不知道到底使用什么信息来识别客户端(我的猜测是IP地址+浏览器版本,但我在这里可能是严重错误的)

其他人可能会告诉您如何配置 Apache 来解决此问题;不幸的是我自己并不知道这一点。然而问题不在于 Javascript / Ajax;而是在于 Javascript / Ajax。这是服务器而不是客户端施加的限制。

  • @Pointy:这正是我使用的旧开发服务器上发生的情况。无论出于何种原因,服务器拒绝同时处理来自任何客户端的多个请求。当您编写需要超过 5 分钟才能运行的大量导出脚本时,这非常烦人。“在初始 ajax 完成之前,第二个浏览器不会在服务器上命中任何断点。任何点击都会挂起......”这告诉我浏览器不会冻结或挂起,它只是等待服务器的响应。 (2认同)