我有一个性能问题,我们有一个 2 页设置作为更大系统中工作流程的一部分。本节专门用于呈现报告,允许用户选择自己的参数。
Page1.aspx
收集报告的参数信息。它获取表单上提交的信息并对其进行验证。如果验证成功,它将选择作为 XML 存储在 DB 中,然后Page2.aspx
使用查询字符串中的运行 ID 重定向到。很简单,性能很棒。
Page2.aspx
从数据库中提取 ID 并水合一个 CrystalReportDocument
对象(需要几毫秒),然后我们调用ExportToHttpStream
它,然后将报告呈现为 PDF 或 DOC 或 XLS 下载(输出格式在 中确定Page1.aspx
)。由于我们的报告编写方式和目标系统上的数据库索引,该方法的性能ExportToHttpStream
非常差。目前这超出了我的控制范围,但我保证他们正在处理中。
所以问题是,当Page1.aspx
按下提交按钮时,用户在下载开始之前会经历很长的延迟。然后,用户再次按下提交按钮认为存在问题,从而使情况更加复杂。
我认为我需要做的是Page1.aspx
重定向到Page2.aspx
. Page2.aspx
应该渲染母版页家具和加载div
,并且报告应该在自动弹出保存对话框之前在后台以某种方式异步渲染,之后我想将加载 div 更改为“生成报告,单击此处返回'。
如果这是实现这一目标的最佳方式,我如何加载整页,然后异步请求报告?我愿意接受任何建议。