【发布时间】:2017-04-23 13:47:45
【问题描述】:
I asked this question 大约 5 年前,围绕如何“卸载”用户无需等待的昂贵操作(例如审计等),以便他们更快地在前端获得响应。
我现在有一个相关但不同的问题。在我的 asp.net-mvc 上,我构建了一些报告页面,您可以在其中生成 excel 报告(i am using EPPlus)和 powerpoint 报告(i am using aspose.slides)。这是一个示例控制器操作:
public ActionResult GenerateExcelReport(FilterParams args)
{
byte[] results = GenerateLargeExcelReportThatTake30Seconds(args);
return File(results, @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", "MyReport.xlsx");
}
该功能运行良好,但我想弄清楚这些昂贵的操作(某些报告可能需要长达 30 秒才能返回)是否影响了其他用户。在上一个问题中,我有一个昂贵的操作,用户 DIDN"T 必须等待,但在这种情况下,他必须等待它作为同步活动(单击生成报告,期望用户在完成后得到报告)
在这种情况下,我不在乎主用户必须等待 30 秒,但 我只是想确保我不会因为生成文件的昂贵操作而对其他用户产生负面影响等
对于这个用例,asp.net-mvc 中是否有任何最佳实践?
【问题讨论】:
-
异步方法真的很好,试试这篇文章asp.net/mvc/overview/performance/…
标签: asp.net-mvc performance reporting scalability