Currently, the reporting module maintains a cache in memory of Report object that have completed processing, containing both the ReportData object and a byte of the rendered report output.
The main purpose for this in-memory cache is due to the fact that serializing the report data to disk, and then reading it from disk and deserializing it back into reportdata is time and resource intensive, and leads to a poor user experience for the Web Renderers.
However, it is possible that for non-web-renderers that there is little benefit to doing this. There is however a drawback, in that if these reports are quite large than this cache can actually take up quite a bit of system memory.
We should try changing our report processing such that for reports that have rendered output, that they are serialized to disk immediately after generation, in the same thread, and not added to the in-memory cache. If this performs close to as well as the current approach, we should adopt it.
We should continue to maintain our cache of Report objects for when the web Renderer is chosen.
Mark Goodrich and [~djazayeri], please comment with any additonal thoughts.