對報表進行訪問時,若模板的數據很大,每次訪問都會從服務器端重新讀取數據,這樣就加大了服務器的壓力並且導致訪問報表的速度變慢,為此可以設置模板緩存,使訪問過模板後再次訪問該模板時直接從緩存中讀取而不需要從服務器端重新讀取以此來減小服務器的壓力以及提高報表的訪問速度,下面就通過web報表開發軟件FineReport來簡單介紹一下。
工具/原料
web報表開發軟件FineReport7.1.1
大小:148.2M 適用平臺:windows/linux
方法/步驟
讀取模板緩存數據的條件
必須是相同模板如該模板有參數則必須輸入的參數值是相同的,即模板的展現結果是相同的。
原理
下面我們以一個例子看下原理
客戶端A訪問服務器上的報表設計模板,從數據庫中讀取,生成想要的模板結果文件,緩存到某處,並傳回客戶端。
而客戶B訪問服務器此模板時,若返回的結果與客戶端A訪問放回的結果相同,於是不從數據庫中的讀取,直接去拿A緩存的那些文件,然後傳回客戶端。
由此可以看出從緩存取模板結果遠快於從數據庫中讀取數據。
設置方法
可以對單個模板進行緩存設置,可以對所有模板進行緩存設置,下面我們分別看下設置方法。
單個模板的緩存設置
緩存設置
在訪問報表的路徑後加&__cache__=true,表示該報表啟用緩存,如:;__cache__=true。
注:只有在訪問模板的url後加__cache__=true,才會生成緩存數據,並且也只有在url後加__cache__=true時,才會從緩存中讀取數據。
緩存有效時間設置
選擇菜單模板>模板web屬性即可設置,如下圖:
如某報表執行需要5秒中,設置的報表緩存有效時間為10秒,用戶A第一次訪問該報表時,會將報表結果緩存下來,緩存時間為15秒;
從A剛開始訪問報表的15秒內,若用戶B同樣訪問了該報表,將直接獲取A訪問時的計算結果。
所有模板的緩存設置
進入FR平臺系統中,選擇管理系統>系統管理>緩存,勾去重新讀取模板就可以啟用緩存了。
注:是否重新加載報表意味著是否讀取緩存,如果不重新加載報表,那麼就是讀取緩存的同一張模板的信息;如果重新加載報表,就是不讀取緩存信息,重新運行報表。