C# ASP.NET中通过HTTP快速传输JSON数据&;IIS 8.0
我有一个MVC操作,它通过HTTP将JSON数据流传输到客户端,数据可以多达400000到600000条记录 当涉及到数据流时,我面临一个性能问题。 例如,对于10000条记录,我设法将映射时间减少到1.3秒,将JSON生成时间减少到1.5秒 然而,当我将数据流式传输到客户端时,我面临一个问题,将数据流式传输到客户端大约需要7秒钟。 我正在使用IIS 8,在操作本身上,我已关闭会话 通过对40000条记录进行测试,查询和生成JSON大约需要8秒,但流式传输数据需要25秒 我的代码(我的自定义ActionResult)如下所示:C# ASP.NET中通过HTTP快速传输JSON数据&;IIS 8.0,c#,asp.net,json,iis,C#,Asp.net,Json,Iis,我有一个MVC操作,它通过HTTP将JSON数据流传输到客户端,数据可以多达400000到600000条记录 当涉及到数据流时,我面临一个性能问题。 例如,对于10000条记录,我设法将映射时间减少到1.3秒,将JSON生成时间减少到1.5秒 然而,当我将数据流式传输到客户端时,我面临一个问题,将数据流式传输到客户端大约需要7秒钟。 我正在使用IIS 8,在操作本身上,我已关闭会话 通过对40000条记录进行测试,查询和生成JSON大约需要8秒,但流式传输数据需要25秒 我的代码(我的自定义Ac
response.Clear();
response.ContentType = "application/json";
response.AddHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
response.AddHeader("Pragma", "no-cache");
response.Write("[ ");
int c=0;
foreach(var item in Data) {
if (c>0) response.Write(", ");
response.Write(ConvertToJson(item));
c++;
//here tried to flush in intervals too - only managed to save like 2 seconds
}
response.Write(" ]");
response.End();
响应是HttpContext.response,在代码上面的几行中,我也设置了所有必要的头
有没有办法优化ASP.NET或IIS以更快地传输数据
更新:
当我使用带宽更好的生产服务器时,传输时间似乎大大缩短了。另一个想法是让客户机请求分块的数据以获得更好的性能,但我可以控制这一点的唯一方法是引入API限制
仍然在寻找优化方案,考虑要考虑哪些项目才能更好的表现。
你肯定会受到网络延迟和路由的限制。除非响应是gzip处理的,否则您无法在那里执行很多操作,这需要一些额外的服务器活动。您能看到数据是否正在被压缩并返回到客户端吗?此外,请检查返回数据的全部带宽。请记住,如果您正在测试生产服务器,那么这不是它响应的唯一请求,因此只是共享部分带宽。