首页 > 解决方案 > 通过 IIS 与静态节点服务的 ASP.NET Web API 流速度

问题描述

我正在为一个允许用户下载相当大的文件(如 1 GB 或更大)的应用程序进行性能改进。我做了一个非常简单的例子,它只从存储中获取一个文件并通过 StreamContent 返回它:

  var fileStream = System.IO.File.Open(@"C:\files\1GB.bin", FileMode.Open, 
  FileAccess.Read);
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Headers.AcceptRanges.Add("bytes");
var content = new StreamContent(fileStream, BufferSize);
response.Content = content;

按照 ASP.NET Web API 2 中的建议使用 BufferSize - StreamContent 非常慢有助于提高性能。但是,将这种下载方法与简单的 Node 静态服务器(我使用的是https://www.npmjs.com/package/serve)进行比较,下载速度存在很大差异。

考虑到以下因素,我想了解可能是什么原因:

因此,导致性能差异的原因真的很有趣。是否可以使用绑定重定向、https 或公共 URL 而不是 IP 地址?有趣的是,即使通过 IIS 进行本地下载仍然比通过 Node serve 进行网络下载要慢。

测试下载是在内存或磁盘上完成的,结果大致相同。

标签: asp.netnode.jsiisasp.net-web-api

解决方案


推荐阅读