【问题标题】:View takes too long to render视图渲染时间过长
【发布时间】:2015-12-15 09:50:09
【问题描述】:

我必须用大量数据填充局部视图。我首先在服务器上进行 ajax 调用:

$.ajax({
    url: '/Monitoring/_Thresholds?workspaceID=' + workspaceID,
    type: "POST",
    data: new FormData(form),
    cache: false,
    contentType: false,
    processData: false,
}).success(function (result) {
    resultsDiv.innerHTML = result;
}).error(function (response) {
    resultsDiv.innerHTML = response.responseText;
});

但是由于数据量很大,这样做需要很长时间,我得到:

HTTP 错误 502.3 - 网关错误

指定的 CGI 应用程序遇到错误,服务器 终止进程。

最可能的原因:

CGI 应用程序没有返回一组有效的 HTTP 错误。 由于父网关中的错误,充当代理或网关的服务器无法处理请求。

你可以尝试的事情:

使用 DebugDiag 对 CGI 应用程序进行故障排除。 确定代理或网关是否会导致此错误。

BL 的东西需要 2-3 秒,但渲染视图要多得多。

有没有办法解决这个问题?

【问题讨论】:

  • 错误“502.3 - Bad Gateway”可能意味着服务器端的错误。我建议您另外使用 Fiddler 或开发者工具来跟踪 HTTP 流量。您应该调试服务器代码。此外,dataType: "html" 的用法在我看来是正确的。
  • @Oleg 没有服务器错误,因为在服务器上视图已呈现但从未提供过
  • 抱歉,我不明白你的意思(“从未服务过”???、“BL 的东西”???)。可以使用在处理/Monitoring/_Thresholds 的服务器代码中设置断点吗?它会被调用还是不调用?您在 HTTP 跟踪中看到了什么?您是否将正确的数据发送到服务器?您是否在服务器响应中看到了一些有用的信息或仅看到相同的错误消息?
  • @Oleg 我在视图末尾添加了一个断点,它被击中了。因此,在服务器上一切都运行良好,只是它花费了太长时间并且结果从未提供过,因为提供了一条错误消息
  • 我认为您以错误的方式解释了您看到的结果。这可能是错误的多种原因。例如,您可以查看the issue。这不是您的情况,而是需要处理从控制器操作返回的数据,并且在处理过程中您会收到错误“HTTP Error 502.3 - Bad Gateway”。我建议您首先检查 HTTP 流量,然后复制和粘贴返回的 HTML 数据,将数据放在静态 HTML 页面上并使用validator.w3.org 进行验证。你也可以调试 MVC 代码

标签: ajax timeout asp.net-core-mvc


【解决方案1】:

在 rc1-final 渲染大视图中有一个known performance issue

为 rc2 做好准备。我猜尽量缩小视图。

【讨论】:

  • 较小的视图是什么意思?更少的html?
  • 我在bug中看到的,大量的html标签会导致不必要的内存分配,从而降低渲染速度。这不是最终版本。这仍然是rc1
猜你喜欢
  • 2015-09-25
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多