?
OSCache簡介
?
OSCache是OpenSymphony這個開源項目眾多Projects中的一個。他是一個高效的J2EE緩存框架,能夠很好的解決動態網站速度的問題。下面來
看下OSCache解決了動態網站的哪些令人郁悶的問題。
1.緩存動態內容:其實我們的動態網頁上一般只有一部分是動態的(表頭,表尾一般是不變的),如果我們緩存整個網頁顯然不成,因為有部分是
隨著請求有可能變的。OSCache提供的方式是允許我們只緩存一部分網頁。
2.緩存2進制內容:產生的圖片和PDF文件在服務器加載的時候非常的耗時。OSCache解決這個問題是通過一個Servlet2.3的緩存過濾功能,然后能
夠緩存任意的URI(比如一個完整的頁面或者是一個產生的圖片/PDF文件)
3.容錯:有這種情況或許我們會遇到,就是當一個動態的網頁出現錯誤。即便我們的頁面有95%都加載完畢,但就是由于這個錯誤,整個頁面就會
返回錯誤的提示或頁面。OSCache允許我們提供出現錯誤時的緩存內容,如果出現就適時的提示出來了。
除了上面的這些Servlet的特征外,OSCache完全可以充當任何一個java程序的緩存方案。OSCache 的一般特征如下:
1.緩存任意對象:可以不受限制的緩存JSP的一部分或是Http請求,任何的Java對象都可以被緩存。
2.全面的API:通過API可以完完全全的控制OSCache的任何特性。
3.持久緩存:我們可以把認為重要的數據緩存到硬盤上。
4.支持集群:集群緩存數據能被單個的進行參數配置,不需要修改代碼。
5.緩存記錄的過期:你可以有最大限度的控制緩存對象的過期,包括可插入式的刷新策略(如果默認性能不需要時)。
?
?
實例1:
?
我們現在的程序是這樣的:
程序的靜態內容和表單都是html
動態的內容都是一個servlet和一個jsp文件,servlet準備數據放到request里然后forward到jsp
jsp唯一功能就是顯示request里面的數據。
現在的問題是有些頁面訪問數據庫量大或者頻繁想做一個cache.
我沒用過oscache,在網上看了一下基本介紹的都是在jsp文件中加入如下形式的代碼
- <cache:cache?key= "products" ?scope= "session" > ??
- ?????????some?jsp?content? ??
- </cache:cache>??
<cache:cache key="products" scope="session"> some jsp content </cache:cache>
可是我的動態內容都是在servlet里面訪問的數據庫,對于動態內容用戶只能訪問servlet不能直接訪問jsp
這樣的話用戶訪問servlet還是要查數據庫阿,
想我這種情況該怎么做呢??
?
解決方案:
1.已經找到解決辦法 CacheFilter 正好滿足我的要求
我就是想把產品列表緩存 弄個filter把那個servlet緩存到application就OK了
正好滿足我的要求,我把緩存時間設置成了1小時
后臺加入一個產品前臺雖然不能立即看到 不過不礙事,增加產品的可能性很小,也不要求時時看到
基本開始的時候就都錄入完畢了
2.如果要在首頁緩存一個產品列表區塊,可以這樣子:)
- <cache:cache?key= "products" ?scope= "session" >? ??
- <jsp:include?page= "product_list.do" /> ??
- </cache:cache>??
?
?
參考資料:
http://blog.csdn.net/foxcai/articles/1232293.aspx
?
http://zhangxinjie.blog.ccidnet.com/blog-htm-itemid-724397-uid-20630-do-showone-type-blog.html
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
