天天看點

緩存與實時報表

當同一報表被連續多次重複通路時,伺服器的運算消耗将會增加,報表展現所需的時間也會增長。如果能夠把第一次算出的報表緩存下來,再次通路時直接從緩存中讀取,則可以減輕伺服器的負擔,進而縮短使用者的等待時間。潤乾報表提供了緩存的機制,可通過設定reportConfig.xml中的緩存參數控制緩存的使用,實作實時報表。

在reportConfig.xml中提供了緩存參數,詳細說明如下

alwaysReloadDefine: 是否每次都重新讀取報表定義,如設為yes,表示關閉緩存功能,設為no,表示開啟緩存功能。

cachedParamsTimeout: 表示送出給報表的參數在緩存中儲存的時間,以分鐘為機關。如果不設此參數,預設值是120分。

cachedReportDir: 表示報表緩存的檔案夾,(在unix系統中,使用者應對此檔案夾有寫的權限,并根據報表的數量和通路量的大小以及緩存逾時的時間,配置設定一個合理的空間大小)。如果不設此參數或設定錯誤,則采用JDK預設的臨時檔案夾。

cachedIdPrefix: 表示報表緩存的字首。隻有在叢集環境中并且多台伺服器共享一個報表緩存目錄時才需要設定。

cachedReportTimeout: 表示報表緩存儲存的時間,以分鐘為機關。如果不設此參數,預設值是120分。此值應根據實際記憶體大小、緩存檔案夾空間大小來調節,一般在1-3小時之間。

當且僅當reportConfig.xml裡的alwayReloadDefine屬性設定為no時,才能開啟報表緩存功能,它在計算時,在指定的時間内,報表定義檔案僅加載一次,報表僅運算一次。其它操作都從緩存中提取,如翻頁等等。

在reportConfig.xml中設定的緩存對所有的應用都起作用。當reportConfig.xml裡的alwayReloadDefine屬性設定為no時,應用中的所有報表都會有緩存功能。我們還可以通過<report:html >标簽設定單個報表是否有緩存功能。

tag标簽中的屬性說明如下:

useCache: 控制是否啟用緩存。當且僅當reportConfig.xml裡的alwayReloadDefine屬性設定為no時,useCache的設定才起作用。當useCache為no時,即使alwayReloadDefine屬性是no,由此标簽釋出的報表,也不會開啟緩存功能。

timeout:從緩存系統中取多少分鐘内産生的報表,如果沒有此時間内的,則産生一個新報表。當且僅當reportConfig.xml裡的alwayReloadDefine屬性設定為no時,timeout的設定才起作用。如果cachedReportTimeout中設定了逾時時間和标簽中的timeout不一緻,以timeout的設定為主。

标簽使用舉例如下:

<report:html name=”report1″

reportFileName=”test.raq”

useCache=”yes”

timeout=”30″

/>

潤乾報表提供的通過配置reportConfig.xml中的緩存參數來靈活控制緩存使用的功能,大大減少了資料量比較大時頻繁通路報表給伺服器帶來的壓力,實作了實時報表,也增強了使用者的體驗。

引自:潤乾報表知識庫