SSRS ReportViewer 使用 HTML5 呈现器呈现报告的速度很慢

SSRS ReportViewer slow to render report with HTML5 renderer

ReportViewer 版本:14

我有一个报告视图,其中显示了我团队所有报告的列表,这些报告按如下方式分组:

ReportGroup1
    Report1
    Report2
    Report3

ReportGroup2
    Report4
    Report5
    Report6
...

当我在浏览器中 运行 报告 (Chrome 60) 时,它非常慢,需要 5 分钟以上才能 运行。此报告中返回了近 1000 行,包括每个报告名称旁边的几个图标和新 window 中每个报告的链接。尽管浏览器速度很慢,但 SQL 查询是即时的,并且使用 Visual Studio 中的预览功能也可以快速呈现报表。

我使用开发人员工具监控了性能,发现新增的 HTML5 似乎导致了瓶颈,特别是 Html5Renderer.js 中的 Resize100HeightElements()Resize100WidthElements() 函数。如果我的理解是正确的,它会根据父级的高度动态调整每一行的大小,这需要花费大量时间处理 ~1000 个对象。

解决方法是将 InteractiveSize 设置为较小的尺寸(例如 8.5 in),这会限制给定页面上返回的行数(我们将其设置为 0 ,它将所有结果打印在一页上)。不过,我们不希望将其分成几页。

有人知道加速长页面的替代方法或提高 HTML5 渲染器性能的方法吗?在不久的将来升级到 SSRS 2016,这是值得的。提前致谢。

编辑:即使报告中的图像大小 属性 设置为剪辑而不是适合比例,当报告不包含任何图像时性能会显着提高。我们如何才能保持图像不被 HTML5 渲染器拖累?

我找到了一个足以满足我们需求的解决方案。

Image Properties 中将图像大小设置为 Original Size 是我发现不会导致渲染速度显着下降的唯一选项大页面。我必须对所有 visible 图像执行此操作;图像大小对隐藏图像没有影响。当我使用 Chrome 开发人员工具重新评估性能时,我发现渲染时间和脚本执行时间都显着减少了。报告现在运行时间小于 5 秒,而之前接近 5 分钟。

根据 this 页面,我怀疑图像大小之前已设置为 Clip,因为 SSRS 没有像文本框中的文本那样为单元格中的图像提供任何类型的对齐选项。我可以通过在每个包含图像的单元格中插入一个矩形,然后将每个图像移动到其单元格中的矩形内来解决这个问题。然后,我分别调整了填充属性,直到每个图像都居中。