風人園

          弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
          隨筆 - 99, 文章 - 181, 評論 - 56, 引用 - 0
          數據加載中……

          OSCache 緩存對象的總結 (ZT)

           
                                    
          OSCache是當前運用最廣的緩存方案。其主被用的最廣泛功能是緩存頁面,這里主要是用其緩存文件對象。
          運用OScache的步驟:
           1.取得oscache.jar 文件放到 /WEB-INF/lib 或相應類庫目錄 目錄中。
           2.oscache.jar依賴commons-collections.jar包。如果你的jdk版本為1.3,
             建議在lib中加入Apache Common Lib 的commons-collections.jar包。
             如jdk是1.4以上則不必要。
           3.src根目錄或發布環境的/WEB-INF/classes 目錄下放入oscache.properties。
           
           cache.memory
           值為true 或 false ,默認為在內存中作緩存,
           如設置為false,那cache只能緩存到數據庫或硬盤中,那cache還有什么意義:)

           cache.capacity
           緩存元素個數

           cache.persistence.class
           持久化緩存類,如此類打開,則必須設置cache.path信息

           cache.cluster 相關
           為集群設置信息。
           如cache.cluster.multicast.ip為廣播IP地址
             cache.cluster.properties為集群屬性

          cache.path   
          硬盤持久化時存放文件的目錄。如果目錄不存在OSCache會自動創建。
          Windows系統:c:\\myapp\\cache。其它:/opt/myapp/cache

          cache.persistence.overflow.only*   
          是否只有當指定的內存緩存已經滿時才進行持久化。推薦使用true,flase是為向后兼容。

          cache.unlimited.disk   
          硬盤緩存是否有限制。缺省為cache.capacity指定的值

          運用:
              com.opensymphony.oscache.general.GeneralCacheAdministrator
          GeneralCacheAdministrator主要對實現持久化對象的保存以及取出的相關的操作。

          Object getFromCache(String key)    //根據key獲取緩存對象
          Object getFromCache(String key , int refreshInterval)//refreshInterval時間內,根據key獲取緩存對象
          void putInCache(String key ,Object obj) //保存被緩存對象
          void flushAll()                                              //刪除所有被緩存的對象
          void flushAll(Date date)                            //在指定的時間去刪除所有被緩存的對象
          void cancelUpdate(String key)                //取消未確定的更新
          java 代碼
           
          1. package com.iflytek;  
          2.   
          3. import java.io.BufferedInputStream;  
          4. import java.io.BufferedOutputStream;  
          5. import java.io.File;  
          6. import java.io.FileInputStream;  
          7. import java.io.IOException;  
          8. import java.text.SimpleDateFormat;  
          9. import java.util.Date;  
          10.   
          11. import javax.servlet.ServletException;  
          12. import javax.servlet.http.HttpServlet;  
          13. import javax.servlet.http.HttpServletRequest;  
          14. import javax.servlet.http.HttpServletResponse;  
          15. import javax.servlet.http.HttpSession;  
          16.   
          17. import com.opensymphony.oscache.base.NeedsRefreshException;  
          18. import com.opensymphony.oscache.general.GeneralCacheAdministrator;  
          19.   
          20.   
          21. public class DisplayChart extends HttpServlet {  
          22.   
          23.     /** 
          24.      * Default constructor. 
          25.      */  
          26.     public DisplayChart() {  
          27.         super();  
          28.     }  
          29.   
          30.     /** 
          31.      * Init method. 
          32.      * 
          33.      * @throws ServletException never. 
          34.      */  
          35.     public void init() throws ServletException {  
          36.         return;  
          37.     }  
          38.   
          39.      
          40.     public static GeneralCacheAdministrator cacheAdmin = new GeneralCacheAdministrator();  
          41.     public void service(HttpServletRequest request,   
          42.                         HttpServletResponse response)  
          43.             throws ServletException, IOException {  
          44.       
          45.         String path = getServletContext().getRealPath("/");   
          46.         File file = null;  
          47.         SimpleDateFormat sdf= new SimpleDateFormat("hh-mm-ss");  
          48.         try {  
          49.             file = (File)cacheAdmin.getFromCache(sdf.format(new Date()));  
          50.             System.out.println("來自緩存!"+ sdf.format(new Date()));  
          51.         } catch (NeedsRefreshException e) {  
          52.             file = new File(path+"xmls\\Pipe11.xml");  
          53.             cacheAdmin.putInCache(sdf.format(new Date()), file);  
          54.             System.out.println("--緩存沒有!"+sdf.format(new Date()));             
          55.         }  
          56.         sendResponse(file,response);  
          57.         return;  
          58.     }  
          59.     /** 
          60.      * 把文件用響應流寫出 
          61.      * @param file 
          62.      * @param response 
          63.      * @throws IOException 
          64.      */  
          65.     public void sendResponse(File file,HttpServletResponse response) throws IOException{  
          66.         BufferedInputStream  bis = new BufferedInputStream(new FileInputStream(file));  
          67.         BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());  
          68.         byte[] input = new byte[1024];  
          69.         boolean eof = false;  
          70.         while (!eof) {  
          71.             int length = bis.read(input);  
          72.             if (length == -1) {  
          73.                 eof = true;  
          74.             }   
          75.             else {  
          76.                 bos.write(input, 0, length);  
          77.             }  
          78.         }  
          79.         bos.flush();  
          80.         bis.close();  
          81.         bos.close();  
          82.     }  
          83.   
          84. }  

          posted on 2007-09-16 15:36 風人園 閱讀(765) 評論(0)  編輯  收藏 所屬分類: Cache


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


          網站導航:
           
          主站蜘蛛池模板: 来安县| 阿合奇县| 吉首市| 祁东县| 中卫市| 建平县| 彰化县| 平江县| 天峻县| 汤原县| 德阳市| SHOW| 太和县| 宣城市| 于田县| 桓台县| 宜章县| 那曲县| 河东区| 庄浪县| 临夏市| 特克斯县| 南江县| 新龙县| 鄢陵县| 广昌县| 长岭县| 故城县| 蓝田县| 衡阳县| 松江区| 尼木县| 济阳县| 南木林县| 榕江县| 奉化市| 永川市| 文水县| 邵东县| 吴川市| 米脂县|