By using the clearReportCache
and destroy
method, you can clear the server side cache. You have to use this method when closing report viewer and switching to another report within your application.
Add the following code in index.js
file.
class Header extends React.Component {
constructor(props) {
}
componentDidMount() {
$(document.body).bind('submit', $.proxy(window.addEventListener, window));
}
}
var isSubmit = true;
$(document.body).bind('submit', $.proxy(window.addEventListener, window));
function addEventListener()
{
isSubmit = false;
}
window.onbeforeunload = function () {
if (isSubmit) {
var reportviewerObj = $("#reportviewer-container").data("boldReportViewer");
reportviewerObj.clearReportCache();
reportviewerObj.destroy();
}
isSubmit = true;
};
ReactDOM.render(<App {...isSubmit} />, document.getElementById('root'));
In the PostReportAction
method, you have to collect the GC
with ClearCache
as shown in the following code sample.
public object PostReportAction([FromBody] Dictionary<string, object> jsonArray)
{
bool isclearcache = false;
if (jsonArray != null && jsonArray.ContainsKey("reportAction") && jsonArray["reportAction"].ToString() == "ClearCache")
{
isclearcache = true;
}
var reportresult = ReportHelper.ProcessReport(jsonArray, this, this._cache);
if (isclearcache)
{
GC.Collect(); isclearcache = false;
}
return reportresult;
}