McGlothlin
McGlothlin

Reputation: 2099

SSRS ReportViewer slow to render report with HTML5 renderer

ReportViewer version: 14

I have a reporting view that displays a list of all my team's reports grouped like so:

ReportGroup1
    Report1
    Report2
    Report3

ReportGroup2
    Report4
    Report5
    Report6
...

When I run this report in the browser (Chrome 60) it is very slow, taking upwards of 5 minutes to run. There are nearly 1000 rows returned in this report including a couple icons next to each report's name and links to each report in a new window. Despite the browser slowness, the SQL query is instantaneous and the report also renders quickly using the Preview function in Visual Studio.

I monitored the performance with Developer Tools and it appears the new HTML5 additions are causing a bottleneck, specifically the Resize100HeightElements() and Resize100WidthElements() functions in Html5Renderer.js. If my understanding is correct, it is dynamically resizing each of these rows based on the height of their parent, which takes a considerable amount of time with ~1000 objects.

A workaround is to set the InteractiveSize to a small size (e.g. 8.5 in) which limits the number of rows returned on a given page (we had it set to 0, which prints all results on one page). We would prefer not to break this out into pages, though.

Does anyone know of an alternative way to speed up long pages or a way to increase performance of the HTML5 renderer? An upgrade to SSRS 2016 is in the near future, for what that's worth. Thanks in advance.

Edit: Performance is significantly improved when the report does not contain any images, even though the image size property in the report is set to Clip and not Fit Proportional. How can we keep our images without being bogged down by the HTML5 renderer?

Upvotes: 2

Views: 949

Answers (1)

McGlothlin
McGlothlin

Reputation: 2099

I found a solution that is sufficient for our needs.

Setting image size to Original Size in the Image Properties is the only option I found won't cause a significant slowdown when rendering large pages. I had to do this for all visible images; the image size makes no difference on hidden images. When I reevaluated the performance using Chrome Developer Tools, I could see that both the render time and script execution time decreased significantly. The report now runs in < 5 seconds where it was closer to 5 minutes before.

I suspect the image size was previously set to Clip because SSRS does not offer any sort of alignment options for images in a cell like they do for text in a textbox, according to this page. I was able to work around this by inserting a rectangle into each cell containing images, then moving each image to sit inside the rectangle in its cell. I then adjusted the padding properties individually until each image was centered.

Upvotes: 1

Related Questions