1. 概述
1.1 应用场景
对报表进行访问时,若模板的数据计算量很大,每次访问都会从服务器端重新读取数据进行计算,这样就加大了服务器的压力并且导致访问报表的速度变慢,为此可以设置模板计算结果缓存来解决这一问题。
1.2 功能简介
设置模板计算结果缓存后,当访问过的模板再次被访问时,直接从缓存中读取计算结果,来减小服务器的压力以及提升报表的访问速度。
1.3 原理
原理说明如下所示:
客户端 A 访问服务器上的报表设计模板,从数据库中读取,生成想要的模板结果文件,缓存到内存中,并传回客户端 A。
而客户 B 访问服务器上此模板时,若返回的结果与客户端 A 访问返回的结果相同,则不从数据库中读取,而是直接读取A缓存的模板数据,然后传回客户端 B。
注1:目前只支持 cpt 模板计算结果缓存。
注2:读取模板计算结果缓存必须满足:同一张模板且拥有相同的参数。
2. 操作步骤
模板计算结果缓存有两种开启方式,且这两种开启方式的缓存数据有效期不同。
2.1 使用__cache__参数开启
在访问报表的路径后加 &__cache__=true,表示该报表启用计算结果缓存,如下所示:
http://localhost:8075/webroot/decision/view/report?viewlet=GettingStarted.cpt&__cache__=true
注1:只要系统没有 GC(Garbage Collections) ,缓存会一直保留。
注2:从缓存中读取数据时 URL 后面也要加 &__cache__=true 。
2.2 设置报表缓存有效时间
在 FineReport 设计器中,点击「模板>模板 Web 属性>基本」,填写「报表缓存有效时间」即可开启,设置页面如下图所示:
注:「报表缓存有效时间」的值为大于 0 的整数,到达有效时间后,缓存数据清空。