我正在使用出色的 SpreadSheetGear 工具即时生成报告。起初一切都很好,因为报告很简单并且在 1 秒内完成。现在我处理更复杂的报告,它们需要大约 30 秒到 1 分钟。这不是问题,我们只是抛出一个活动图像,让用户等待,我们很好。
我发现的问题是当两个用户访问该站点时。
- 用户 1 来到网站
- 用户 1 运行需要 30 秒的报告。
- 用户 2 来到站点
- 用户 2 等待用户 1 报告完成,然后页面加载。
为用户 1 运行的报告会挂起站点,直到完成。发生了什么事,我该如何解决?
我正在使用出色的 SpreadSheetGear 工具即时生成报告。起初一切都很好,因为报告很简单并且在 1 秒内完成。现在我处理更复杂的报告,它们需要大约 30 秒到 1 分钟。这不是问题,我们只是抛出一个活动图像,让用户等待,我们很好。
我发现的问题是当两个用户访问该站点时。
为用户 1 运行的报告会挂起站点,直到完成。发生了什么事,我该如何解决?
您没有分享有关代码外观的任何细节,但听起来您应该考虑制作异步页面。简而言之,诀窍是将繁重的工作从用于服务页面请求的线程池中移出。通过将繁重的工作转移到其他线程,可以将线程池线程快速返回到池中,以便为其他传入请求提供服务。
那么更重要的是生成报告的机器可以完成多少工作。
报告数据多久更改一次?例如,如果您使用的是 SQL Server,您可以使用存储过程将报告数据创建到表中,并将存储过程作为 SQL Server 代理作业运行。将作业设置为频繁运行,因为您希望更新数据。这应该会大大加快您的页面速度。
听起来您可能在同一个线程上有两个请求?