gpt4 book ai didi

javascript - 页面中的 ajax 调用之一导致的延迟问题

转载 作者:行者123 更新时间:2023-12-02 19:00:11 25 4
gpt4 key购买 nike

我的页面上有多个 ajax 调用。为了简洁起见,我们将它们称为 A、B、C。 “A”从服务器获取数据花费的时间太长,比如 2 分钟(我可以接受 2 分钟)。而“B”和“C”响应时间以毫秒为单位。

由于某种原因,AJAX 调用在“A”之后排队。即使 IE 9 可以同时对同一域有 6 个并发请求连接。您可以在下面的屏幕截图中看到并发连接。

“A”需要 2 分钟,然后“B”和“C”进入待处理状态,直到“A”完成。

我找到了“ajax_threads.js”http://cmarshall.net/MySoftware/ajax/Threads/但我不知道这是否有帮助。我理解“ajax_threads.js”的方式是它只提供多个连接,该功能已经存在于现代浏览器中。 IE 7 曾经有 2 个连接。

first ajax call pending

这是 JavaScript:

    $(function () {  $.ajax({
type: "POST",
url: "Service1.svc/GetDate",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (msg) {
// Replace the div's content with the page method's return.
$("#Result1").text(msg.d);
}
});


$.ajax({
type: "POST",
url: "Service1.svc/GetDate2",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (msg) {
// Replace the div's content with the page method's return.
$("#Result2").text(msg.d);
}
}); });

HTML:

  <input type="button" id="Button1" value="1"/><div id="Result1"></div>
<br/><input type="button" id="Button2" value="2"/><div id="Result2"></div>

服务器代码:(启用 Ajax 的 WCF)

     [ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1
{
[OperationContract]
public string GetDate()
{
System.Threading.Thread.Sleep(8000);
return DateTime.Now.ToString();
}

[OperationContract]
public string GetDate2()
{
System.Threading.Thread.Sleep(1000);
return DateTime.Now.ToString();
}
}

最佳答案

我打赌您正在服务器上使用 ASP.NET Session。这是使用 Session 时的标准症状。原因非常简单,源于 ASP.NET Session 的设计。它不是线程安全的。因此 ASP.NET 所做的只是锁定对其的访问。这样做的结果是您无法从同一 session 执行并行请求。它们只会按照您观察的方式进行排队。

解决这个问题的最好方法就是简单地摆脱这个可怕的 ASP.NET session 。您可以在 web.config 中添加以下内容,以确保项目中的开发人员不会犯使用它的错误:

<system.web>
<sessionState mode="Off" />
...
</system.web>

关于javascript - 页面中的 ajax 调用之一导致的延迟问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14864712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com