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

          oscache 使用總結

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

          前陣子對公司網站進行了性能優化,其中,有一項就是使用OSCache添加頁面的緩存,開始還不以為然,做完緩存后,發現服務器的負載大大減小了,看來還真不能小瞧OSCache。

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

          OSCache的配置和使用

          一、oscache 環境搭建

              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放入本地項目的應用目錄,如下:

                   $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
                 設置是否使用內存緩存
                 可設置為true 或者 false ,默認為true


               2,cache.capacity =10000
                 設置緩存對象的最大數量值
                 默認是不限制,cache不會移走任何緩存內容,負數被當作不限制


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


               4,cache.path
                  指定硬盤緩存的路徑,目錄如果不存在將被建立,同時注意oscache應該要有權限寫文件系統。
                  設置如:cache.path=d:""myapp""cache


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


          三、標簽參數介紹


               使用了oscache:cache 的屬性:

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

               scope  范圍,有application和session, 默認為 application

               time  緩沖內容的時間(秒),默認為1小時,3600秒,如果為-1則內容永遠不過期

               refresh 強制刷新緩存,false 或者true,可以使用此屬性受動刷新需立即更新的數據

               groups
          設置分組,可以同組的緩沖數據進行控制

               language  語言,默認為當前頁面的語言

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


          四、oscache 基本用法

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

               注意:cacheKey或者time如果是jsp表達式時,如:key=”<%=”string”+variable%>”而不是:key=”string<%=variable%>”,寫法要注意,否則頁面會報錯


               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'>
                  這里面的內容被緩存到鍵值為cacheKey_1,組名為a和b的緩存中,正常情況下,每隔5秒鐘刷新一 次,但受上面標簽“<cache:flush group='b' scope='application'/>”的影響,它將隨每次頁面的刷新而刷新
                  </cache:cache>

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

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

                  <cache:cachekey='cacheKey_4' duration='20s'>
                   這里面的內容被緩存到cacheKey_4,組a,b中,組是通過標簽<cache: addgroups>而添加的,它也會受本頁開頭標簽“<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/

          ---------------------------------
          假到真時真亦假,真到假時假亦真
          ---------------------------------

          評論

          # re: oscache 使用總結  回復  更多評論   

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

          # re: oscache 使用總結  回復  更多評論   

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

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


          網站導航:
           
          主站蜘蛛池模板: 晋宁县| 武川县| 福贡县| 乌苏市| 崇阳县| 太仆寺旗| 自贡市| 黑山县| 郑州市| 宜宾市| 大荔县| 北川| 广南县| 白河县| 海口市| 浠水县| 栾川县| 桦甸市| 崇信县| 泾阳县| 莒南县| 建湖县| 渭源县| 南阳市| 密山市| 昌宁县| 涡阳县| 正定县| 武鸣县| 灵石县| 长寿区| 伊宁县| 象山县| 资兴市| 丹凤县| 通州区| 抚顺县| 高青县| 分宜县| 伊春市| 砀山县|