目录

单用户缓存

概念定义

单用户缓存是指当某个客户端访问某个报表,引擎将其计算出来后,会将运算结果缓存下来。同一个客户端访问完该报表后,如果需要对同一报表结果进行别的操作,例如打印、导出、翻页等,引擎直接从缓存里取报表结果,而不必重新计算。

功能背景

由于WEB服务器与浏览器之间无连接的特性,导致B/S方式下服务器端实体(在我们报表系统中主要是指报表模板、报表及报表分页)的生命周期无法完全与浏览器端保持一致。

举例来说,客户端访问了一张报表,报表计算且向客户端输出完毕后,是否应当从内存中清除报表对象呢?服务器无法判断客户端是否还需要使用这个对象,事实上,客户端往往还需要翻页、打印、导出等操作,此时还需要使用报表对象;而客户端也完全有可能关闭浏览器,不再访问了。因此,如果服务器端清除了报表对象,则客户端进行翻页、打印、导出等操作时,不得不重新进行计算,浪费cpu;如果客户端不再访问了而服务器端却保留着报表对象,则会浪费内存。

为了解决这个问题,我们对这些实体采取了带时间管理的缓存策略

如果通过tag标签访问,自动会缓存报表。通过调用API接口计算报表,如果不调用缓存管理器的API,就不会进行报表缓存。

使用方法

缓存时间和缓存目录的配置在reportConfig.xml中,其中时间以分钟为单位,如下所示:

<config> <!-- 配置缓存报表目录 -->
    <name>cachedReportDir</name>
    <value>c:\runqian\cached</value>
</config>
<config>
    <!-- 配置报表最大未访问时长,以分钟为单位 -->
    <name>cachedReportTimeout</name>
    <value>120</value>
</config>
<config>
    <!-- 配置参数最大未访问时长,以分钟为单位 -->
    <name>cachedParamsTimeout</name>
    <value>120</value>
</config>

说明: