【问题标题】:Ajax posting a complex and large object to Web API controller is very slowAjax 将复杂且大的对象发布到 Web API 控制器非常慢
【发布时间】:2020-08-06 03:55:24
【问题描述】:

我通过 jQuery ajax 将一个结构稍微复杂的大型对象发布到 Web API 控制器方法,但是速度非常慢,请求到达 Web API 控制器方法需要一个多小时。

Application_BeginRequest 方法中获取的内容长度为 27505212。

ajax帖子如下图,

public static Send(request: RequestWrapper) {
    return $.ajax({
        url: 'api/MyController/methodname',
        type: 'POST',
        dataType: 'json',
        data: request
    });
}

而控制器方法如下图,

    [HttpPost]
    public HttpResponseMessage Send(RequestWrapper request)
    {
    }

有没有更好/更简单的方法来做到这一点?非常感谢任何建议。

【问题讨论】:

  • 发送更小的结构(fx 没有不必要的数据),使用更好的数据计划(更快的互联网连接)并且可能使用更快的服务器......最终使用与 JSON 不同的东西,而不是那么冗长(二进制格式 fx protobuf )

标签: c# jquery ajax asp.net-web-api serialization


【解决方案1】:

27 MB 是一个非常大的 POST 负载。您已经发现有效载荷如何可能太大!

你应该把它分成小得多的块,可能不超过 10-50k。然后您的服务器可以从块中重新组装大对象。如果您使用的是负载平衡的基础架构,那么重组操作将使您的共享会话管理器工作得非常辛苦。

您最好的长期解决方案是重构您的大对象,使其成为数百个较小的对象。您没有告诉我们有关数据结构的任何信息,因此无法就如何做到这一点提供建议。

【讨论】:

  • 同意。我不确定我是否可以显示数据的结构,但是它复杂而深刻。服务器负载均衡。
猜你喜欢
  • 2018-01-22
  • 1970-01-01
  • 2020-09-22
  • 2019-03-26
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
相关资源
最近更新 更多