我有一个 ASP.NET Core 应用程序。有一个从 DB 中的数据创建的报告,其大小可能有数 GB。
是否可以将数据作为来自 WebAPI 的响应以块的形式流式传输,从而最大限度地减少服务器上的内存使用?
我想要的一个非常粗略的想法是
[HttpGet]
public IActionResult HugeReport()
{
Response.ContentType = "text/plain";
StreamWriter sw = new StreamWriter(Response.Body);
var doc = new SpreadsheetDocument();
for (int i = 0; i < 100; i++)
{
var data = Db.Skip(i * 1000).Take(1000);
doc.WorkbookPart.AddData(data);
}
}
或者,如果这种方法不可行,我可以在文件系统中以块的形式构造一个文件,逐次迭代(不将整个文档加载到内存中)吗?