配置潤幹報表的快取
任務背景
不管報表引擎的演算法如何優化,報表資料量大到一定程度,使用者併發數多到一定程度,伺服器的效能總會告急,因此,報表引擎的任務一方面是優化演算法,另一方面也是更重要的,是要提供有效的快取機制與併發控制機制。
面臨困難
報表的快取,乍一聽似乎挺簡單的,不就是把算好的報表存下來,然後再次訪問時不用再次計算了,直接從快取裡讀取嗎?實際做起來需要考慮的細節很多,並不那麼容易。
首先,要考慮引數和巨集。大部分報表都是有引數或者巨集的,不同的引數和巨集,會算出不同的結果報表,因此,報表的快取不僅僅和報表模板關聯,還和引數、巨集有關係,只有引數和巨集完全相同的時候,才能從快取裡讀取。
其次是快取時間的問題,如果某個快取的報表不斷地被訪問,那麼使用者訪問到的始終是舊報表,無法更新,因此報表快取的時候還需要記錄快取的時間,而使用者訪問的時候可以請求多長時間內快取的報表,從而保證一定的新鮮度。
接著,還需要考慮報表模板的更新問題,一旦報表模板更新了,就要觸發該報表的快取清除,從而保證使用者訪問到的是新的報表。而這種快取的清除,不能影響到別的報表。
最麻煩的要數集群的情況了,目前的集群有兩種,一種是session和伺服器繫結,一旦登陸了就始終訪問同一臺伺服器;另一種是session複製的機制,session不和伺服器繫結,可能一會訪問這台伺服器,一會訪問另一台伺服器,這種情況使用者引數還必須跟著session走。
集群的時候,在a伺服器上快取的報表,在b伺服器上是找不到的,此時只能在伺服器之間進行通訊,互相查詢、讀取快取的報表。
小小的快取問題,卻引發了如此多的麻煩事,不過不用煩惱,潤幹報表4.0新推出的快取機制,很好地解決了上述問題。實現步驟非常簡單:
實現步驟
1、在reportconfig.xml檔案中,把alwaysreloaddefine屬性設為no
2、在呼叫報表的jsp中,把
效果演示
圖1、沒有使用快取,每一次訪問,都會與資料庫互動一次
圖2、啟動快取機制,再次訪問時不再計算,而是直接生成html
潤幹報表分組求和 潤幹報表實現組內排序報表及改進
報表開發中經常會遇到需要進行組內排序的報表,如按月份的分組彙總值排序顯示,並顯示每月銷售額前十名的記錄。使用報表工具一般通過隱藏行列輔助可以實現,下面通過例項說明潤幹報表的實現過程,以及改進方案。報表需求 根據銷售管理系統資料統計客戶所在地區的訂單總額,地區並按訂單總額降序排列,要求每個地區中顯示銷...
潤幹報表集群快取同步功能介紹
目前伺服器的集群,大多是使用session同步的方法解決的問題,即讓集群中一台電腦的session在集群伺服器發生相互之間跳轉的時候,把session也同時複製到相應的電腦上。例如 在集群伺服器中,第一次訪問a機器,第二次跳轉到b機器繼續訪問,伺服器會自動把a機器產生的session的內容複製到b機...
潤幹報表集群快取同步功能介紹
目前伺服器的集群,大多是使用 session 同步的方法解決的問題,即讓集群中一台電腦的 session 在集群伺服器發生相互之間跳轉的時候,把 session 也同時複製到相應的電腦上。例如 在集群伺服器中,第一次訪問 a 機器,第二次跳轉到 b 機器繼續訪問,伺服器會自動把 a 機器產生的 se...