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

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