cache是一種用於提高系統響應速度、改善系統執行效能的技術。尤其是在web應用中,通過快取頁面的輸出結果,可以很顯著的改善系統執行效能。本文中作者給大家介紹乙個實現j2ee框架中web應用層快取功能的開放源**專案----oscache。通過應用oscache,我們不但可以實現通常的cache功能,還能夠改善系統的穩定性。
1 面臨的問題
1.1 需要處理的特殊動態內容
在資訊系統建設過程中我們通常會遇到這樣的問題:
1. 基礎資料的變更問題
資訊系統中需要處理的基礎資料的內容短時間內是不會發生變化的,但是在乙個相對長一些的時間裡,它卻可能是動態增加或者減少的。
舉個例子:電子商務中關於送貨區域的定義,可能短時間內不會發生變化,但是隨著電子商務企業業務的擴大,系統中需要處理的送貨區域就可能增加。所以我們的系統中不得不在每次向客戶展示送貨區域資訊的時候都和資料庫(假設送貨區域資訊儲存在資料庫中,這也是通常採用的處理方法)進行互動。
2. 統計報表(不僅限於統計報表)的問題
一般來說,統計報表是乙個週期性的工作,可能是半個月、乙個月或者更長的時間才會需要更新一次,然而統計報表通常是圖形顯示或者是生成pdf、word、excel等格式的檔案,這些圖形內容、檔案的生成通常需要消耗很多的系統資源,給系統執行造成很大的負擔。
1.2 問題的共同點
通過比較分析,不難發現這兩類問題有一些共同點:
1、被處理的內容短時間不變,所以短時間內可以作為靜態內容進行處理
2、在乙個不太長的時間內,被處理的內容可能或者必定產生變化,所以必須將他們作為動態內容進行處理
3、在合理的時間區段內可以忽略被處理內容變化後帶來的影響
4、對這些內容的處理動作比較消耗系統效能,影響系統響應時間
1.3 解決方法
快取技術可以幫助我們很好的解決這個問題:
1、快取資訊
當上述的基礎資料或者統計報表第一次被訪問時,被處理的內容被當作動態資訊,基礎數庫從資料庫中獲得,統計報表也會被生成符合要求的圖形、檔案,然後這些資訊都會被放入快取資訊中。
2、響應資訊由快取提供
當上述的基礎資料或者統計報表繼續被訪問時,系統將會首先檢查快取資訊中是否有對應的內容和我們設定的快取規則,如果符合快取資訊存在而且符合快取規則,給出的響應將來自於快取資訊,如果沒有或者快取資訊已經不符合設定的要求,系統將重複上一步的動作。
很顯然,上面的步驟2中,多數情況下,當使用者請求到達時,被處理的內容將來自於快取,所以大大的減少了與資料庫的互動,或者不再需要為每個請求都生成一次報表圖形或者檔案,這部分工作的減少對於降低系統效能消耗、提高系統穩定性和併發處理能力是非常有益的。
2 oscache簡介
oscache是opensymphony組織提供的乙個j2ee架構中web應用層的快取技術實現元件,它的出現解決了我們面臨的問題。 oscache目前最新的穩定版本是2.0,本文中的例子都是基於這個版本的,如果大家執行例子的過程中發生問題,請首先確認是否採用了正確的軟體版本。
2.1 主要特徵
1. 相容多種支援jsp的web伺服器
已經通過相容測試的web伺服器包括orionserver (1.4.0或者以上版本) 、macromedia jrun (3.0或者以上版本) 、bea weblogic (7.x或者以上版本) 、ibm websphere (5.0版本)、silverstream (3.7.4版本)、caucho resin (1.2.3或者以上版本)、tomcat (4.0或者以上版本) ,其他支援servlet2.3、jsp1.2的web伺服器應該都是完全相容oscache的。
2. 可選的快取區
你可以使用記憶體、硬碟空間、同時使用記憶體和硬碟或者提供自己的其他資源(需要自己提供介面卡)作為快取區。
使用記憶體作為快取區將可以提供更好的效能
使用硬碟作為快取區可以在伺服器重起後迅速恢復快取內容
同時使用記憶體和硬碟作為快取區則可以減少對記憶體的占用
3. 靈活的快取系統
oscache支援對部分頁面內容或者對頁面級的響應內容進行快取,程式設計者可以根據不同的需求、不同的環境選擇不同的快取級別。
4. 容錯
在一般的web應用中,如果某個頁面需要和資料庫打交道,而當客戶請求到達時,web應用和資料庫之間無法進行互動,那麼將返回給使用者"系統出錯"或者類似的提示資訊,如果使用了oscache的話,你可以使用快取提供給使用者,給自己贏得維護系統或者採取其他補救的時間。
其它特性還包括對集群的支援、快取主動重新整理等特性,大家可以參考opensymphony**上的其他資源獲取更多的資訊。
4 開始使用oscache中的快取元件
oscache中按照快取範圍的不同分為兩種不同的方式:一種是快取jsp頁面中部分或者全部內容,一種是基於整個頁面檔案的快取。
[注] 只有客戶訪問時返回http頭資訊中**為200(也就是訪問已經成功)的頁面資訊才能夠被快取
1. 快取單個檔案
修改web.xml,增加如下內容,確定對/testcontent.jsp頁面進行快取。
cachefilter
com.opensymphony.oscache.web.filter.cachefilter
2. 快取url pattern
修改web.xml,增加如下內容,確定對*.jsp頁面進行快取。
cachefilter
com.opensymphony.oscache.web.filter.cachefilter
應用OSCache提公升J2EE系統執行效能
cache是一種用於提高系統響應速度 改善系統執行效能的技術。尤其是在web應用中,通過快取頁面的輸出結果,可以很顯著的改善系統執行效能。本文中作者給大家介紹乙個實現j2ee框架中web應用層快取功能的開放源 專案 oscache。通過應用oscache,我們不但可以實現通常的cache功能,還能夠...
J2EE安全應用
color red tomcat 5.5 測試可用 color 閱讀宣告 本次案例,使用tomcat的 color red tomcat users.xml color 檔案 tomcat users.xml提供了安全領域,這個檔案會在tomcat啟動時載入進記憶體,它足夠用來 測試安全的配置效果。...
j2ee自學心得
學習是一件快樂的事,學習是一件痛苦的事,它讓你能夠把學到的東西帶來財富,它也能讓你仁慈學到的東西帶來無用武之地 看書 當你買了一本新書的時候,不要瀑布式的往下看,這是傳統的學習方法,不適合 現代高科技社會的學習方法,尤其是電腦科學,為什麼以前的瀑布式軟體開發方法到 今天會失敗,因為瀑布式的方法很難看...