gpt4 book ai didi

javascript - Ajax 调用 Controller 需要很长时间

转载 作者:行者123 更新时间:2023-12-01 01:17:06 25 4
gpt4 key购买 nike

我有一个从 Javascript 文件到 MVC5 Controller 的简单 ajax 调用。此调用大约需要 2 秒。 javascript 和 Controller 中的任务都非常简单。我无法显示完整的代码,但我对整个调用堆栈进行了性能测量。

如果所有操作都在 10 毫秒内完成,那么延迟从何而来?您可以在下图中看到,其中 TTFB 为 2.12 秒,我的 Controller 显然早于 2.12 秒(根据我的性能测试为 2 毫秒)完成此操作。

我是否错过了诸如网络问题之类的问题 - 很怀疑,因为这一切都是在我的开发 PC 上完成的。我还对部署到独立 IIS 服务器的完全编译的应用程序进行了相同的尝试(UAT 但仍然......),结果是相同的。

我唯一想到的是 asp.net 在 Controller 方法完成之后、实际将 JSON 数据返回到浏览器之前做了一些事情?

Javascript执行:

1: 1.2000 milliseconds (get values)
2: 2.4000 milliseconds (validation)
3: 2.9000 milliseconds (just before Ajax call)
4: 2172.3 milliseconds (inside Ajax Success)
5: 2174.3 milliseconds (last step in Ajax Success)
6: 0, 0, 1 (see below, these are controller values)

Controller 执行:

1: 0 milliseconds (Controller init, constructor completed)
2: 0 milliseconds (Action start)
3: 1 milliseconds (Action end (just before return)

Javascript代码:

// previous steps omitted, you can see the times for steps 1-3.

$.ajax({
type: "POST",
url: $("#appPath").val() + "/MyController/TrivialAction",
data: req,
cache: false,
global: false,
success: function (response) {
console.log("4: " + (performance.now() - t0) + " milliseconds.")

// some code here...

console.log("5: " + (performance.now() - t0) + " milliseconds.")

console.log(response.StepsInCtrlr);
},
error: function (errorxhr, status, error) {
BootBoxDiplayHtml(errorxhr.responseText);
}
});

这是 Controller 返回方法(根据 Peter B 的回答)

return Json(new
{
IsError = resp.IsError,
ErrorMessage = string.Join("<br>", resp.ErrorMessages),
Amount = resp.Amount.ToString("n2")
}, JsonRequestBehavior.AllowGet);

(不是上面的确切请求,而是类似的请求)

enter image description here

最佳答案

如果您收到一致的冷和热长请求,但缺少时间,那么它可能指向您正在使用的 IoC 项目。

我发现其中一些需要 0.5 秒才能解决请求,这意味着您在黑洞中浪费了时间。

我经历过 Ninject 在大型应用程序中吞噬近 0.4 秒的时间,这太多了。我将该项目移植到 SimpleInjector,这几乎是瞬时的。

虽然 SimpleInjector 让您遵守更严格的规则集,并且不提供某些依赖项的自动配置,但它确实会奖励您以闪电般的快速解决时间加倍努力。现在,当我放入 IoC 时,它已成为我事实上的标准。

关于javascript - Ajax 调用 Controller 需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54650132/

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