posts - 10, comments - 16, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          oscache 使用總結(jié)

          Posted on 2009-05-22 22:45 青果 閱讀(2248) 評論(2)  編輯  收藏 所屬分類: 技術(shù)點(diǎn)滴

          前陣子對公司網(wǎng)站進(jìn)行了性能優(yōu)化,其中,有一項(xiàng)就是使用OSCache添加頁面的緩存,開始還不以為然,做完緩存后,發(fā)現(xiàn)服務(wù)器的負(fù)載大大減小了,看來還真不能小瞧OSCache。

          OSCache 主要用于頁面緩存,當(dāng)然它也可用于數(shù)據(jù)層緩存,但數(shù)據(jù)層緩存一般使用ehcache比較成熟。OSCache對于更新較慢的頁面(比如一天或半天更新一次)緩存效果比較好,能大幅降低數(shù)據(jù)庫和服務(wù)器的壓力,而且OSCache簡單易用,是一個(gè)非常不錯(cuò)的緩存框架。

          OSCache的配置和使用

          一、oscache 環(huán)境搭建

              1, 從 https://oscache.dev.java.net/files/documents/629/61427/oscache-2.4.1-full.zip 下載        oscache-2.4.1-full版本,并從壓縮包中分別拷貝oscache-2.4.1.jar、oscache.properties、        oscache.tld放入本地項(xiàng)目的應(yīng)用目錄,如下:

                   $WEB-APP"WEB-INF"lib"oscache.jar

                   $WEB-APP"WEB-INF"classes"oscache.properties

                   $WEB-APP"WEB-INF"classes"oscache.tld

               2, 在web.xml 中加入如下配置

                   <taglib>
                   <taglib-uri>oscache</taglib-uri>
                   <taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>
                   </taglib>

                3, 如果需要日志輸出,可在log4j.properties文件中加入如下配置

                    log4j.appender.file=org.apache.log4j.RollingFileAppender
                    log4j.appender.file.File=oscache.log
                    log4j.appender.file.MaxFileSize=100KB
                    log4j.appender.file.MaxBackupIndex=5
                    log4j.appender.file.layout=org.apache.log4j.PatternLayout
                    log4j.appender.file.layout.ConversionPattern=[start]%d{yyyy/MM/dd/HH:mm:ss}

          二、oscache.properties

              主要配置

               1,cache.memory = true
                 設(shè)置是否使用內(nèi)存緩存
                 可設(shè)置為true 或者 false ,默認(rèn)為true


               2,cache.capacity =10000
                 設(shè)置緩存對象的最大數(shù)量值
                 默認(rèn)是不限制,cache不會移走任何緩存內(nèi)容,負(fù)數(shù)被當(dāng)作不限制


               3,cache.unlimited.disk
                 指定硬盤緩存是否要作限制,默認(rèn)值為false
                 false的狀況下,硬盤緩存容量將和cache.capacity的值相同


               4,cache.path
                  指定硬盤緩存的路徑,目錄如果不存在將被建立,同時(shí)注意oscache應(yīng)該要有權(quán)限寫文件系統(tǒng)。
                  設(shè)置如:cache.path=d:""myapp""cache


               5,cache.persistence.overflow.only
                  指定是否只有在內(nèi)存不足的情況下才使用硬盤緩存。默認(rèn)值false,推薦使用true如果內(nèi)存cache被允許的話


          三、標(biāo)簽參數(shù)介紹


               使用了oscache:cache 的屬性:

               key  緩沖的key,可以是任何的字符串,也可以動態(tài)生成。在一個(gè)范圍內(nèi)必須唯一。默認(rèn)使用請求的URI和請求的字符串(問號后面的部分)

               scope  范圍,有application和session, 默認(rèn)為 application

               time  緩沖內(nèi)容的時(shí)間(秒),默認(rèn)為1小時(shí),3600秒,如果為-1則內(nèi)容永遠(yuǎn)不過期

               refresh 強(qiáng)制刷新緩存,false 或者true,可以使用此屬性受動刷新需立即更新的數(shù)據(jù)

               groups
          設(shè)置分組,可以同組的緩沖數(shù)據(jù)進(jìn)行控制

               language  語言,默認(rèn)為當(dāng)前頁面的語言

               還有許多其他的屬性,在這里不一一列舉


          四、oscache 基本用法

              1,設(shè)置緩存
                 <%@ taglib uri="/WEB-INF/tlds/oscache.tld" prefix="oscache" %>
                 <oscache:cache key=”cacheKey” time=”300” scope=”application”>被緩存的列表          </oscache:cache>  其中,cacheKey和time可以自己動態(tài)構(gòu)件,scope(緩存范圍) 可以是ession、application

               注意:cacheKey或者time如果是jsp表達(dá)式時(shí),如:key=”<%=”string”+variable%>”而不是:key=”string<%=variable%>”,寫法要注意,否則頁面會報(bào)錯(cuò)


               2,刷新緩存

                  <%@ taglib uri="/WEB-INF/tlds/oscache.tld" prefix="oscache" %>
                  <oscache:flush key=”cacheKey” scope=”application” />


               3,分組緩存

                  <cache:flush group='b' scope='application'/>
                  <cache:cachekey='cacheKey_1' groups='a,b' duration='5s'>
                  這里面的內(nèi)容被緩存到鍵值為cacheKey_1,組名為a和b的緩存中,正常情況下,每隔5秒鐘刷新一 次,但受上面標(biāo)簽“<cache:flush group='b' scope='application'/>”的影響,它將隨每次頁面的刷新而刷新
                  </cache:cache>

                  <cache:cachekey='cacheKey_2' groups='a' duration='5s'>
                  這里面的內(nèi)容被緩存到鍵值為cacheKey_2,組名為a的緩存中,它將每隔5秒中刷新一次
                  </cache:cache>

                  <cache:cachekey='cacheKey_3' duration='20s'>
                  這里面的內(nèi)容被緩存到cacheKey_3,組a,b中,組是通過標(biāo)簽<cache: addgroup>而添加的,它也會受本頁開頭標(biāo)簽“<cache:flush group='b' scope='application'/>”的影響而隨頁面刷新而刷新
                  <cache:addgroup group='a'/>
                  <cache:addgroup group='b'/>
                  </cache:cache>

                  <cache:cachekey='cacheKey_4' duration='20s'>
                   這里面的內(nèi)容被緩存到cacheKey_4,組a,b中,組是通過標(biāo)簽<cache: addgroups>而添加的,它也會受本頁開頭標(biāo)簽“<cache:flush group='b' scope='application'/>”的影響而隨頁面刷新而刷新
                  <cache:addgroups groups='a,b'/>
                  </cache:cache>

          五、參考資料

              1,oscache-2.4.1-full 中的demo,下在地址:
                 https://oscache.dev.java.net/files/documents/629/61427/oscache-2.4.1-full.zip
              2,oscache API:http://www.opensymphony.com/oscache/api/

          ---------------------------------
          假到真時(shí)真亦假,真到假時(shí)假亦真
          ---------------------------------

          評論

          # re: oscache 使用總結(jié)  回復(fù)  更多評論   

          2009-05-23 09:14 by canbeing
          不錯(cuò)不錯(cuò),講得很清晰

          # re: oscache 使用總結(jié)  回復(fù)  更多評論   

          2009-05-31 23:28 by
          收到!呵呵,不過這個(gè)也要看需求吧,不是所有的東西都能去緩存

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 扶沟县| 洛浦县| 永川市| 阳春市| 洛宁县| 安新县| 广丰县| 天水市| 罗田县| 石屏县| 芷江| 澎湖县| 乌拉特后旗| 南投县| 苏尼特右旗| 霍山县| 平阴县| 永丰县| 牡丹江市| 南皮县| 民乐县| 滕州市| 闻喜县| 云林县| 习水县| 宝丰县| 明星| 五大连池市| 肥乡县| 永福县| 莫力| 固镇县| 丹凤县| 家居| 泰和县| 临朐县| 大悟县| 保山市| 普兰县| 日喀则市| 嘉峪关市|