Ajax 将复杂且大的对象发布到 Web API 控制器非常慢
Posted
技术标签:
【中文标题】Ajax 将复杂且大的对象发布到 Web API 控制器非常慢【英文标题】:Ajax posting a complex and large object to Web API controller is very slow 【发布时间】: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 ) 【参考方案1】:27 MB 是一个非常大的 POST 负载。您已经发现有效载荷如何可能太大!
你应该把它分成小得多的块,可能不超过 10-50k。然后您的服务器可以从块中重新组装大对象。如果您使用的是负载平衡的基础架构,那么重组操作将使您的共享会话管理器工作得非常辛苦。
您最好的长期解决方案是重构您的大对象,使其成为数百个较小的对象。您没有告诉我们有关数据结构的任何信息,因此无法就如何做到这一点提供建议。
【讨论】:
同意。我不确定我是否可以显示数据的结构,但是它复杂而深刻。服务器负载均衡。以上是关于Ajax 将复杂且大的对象发布到 Web API 控制器非常慢的主要内容,如果未能解决你的问题,请参考以下文章
如何将带有附加数据的 FormData 文件发送到 asp.net web api ajax 调用
通过 AJAX 将 JSON 数据发布到 Web API 失败,并显示“无法将 JSON 值转换为 System.Int32”