OSCache是個一個廣泛採用的高性能的J2EE緩存框架,OSCache能用於任何Java應用程序的普通的緩存解決方案。OSCache有以下特點:緩存任何對象,你可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。擁有全面的API--OSCache API給你全面的程序來控制所有的OSCache特性。永久緩存--緩存能隨意的寫入硬盤,因此允許昂貴的創建(expensive-to-create)數據來保持緩存,甚至能讓應用重啓。支持集羣--集羣緩存數據能被單個的進行參數配置,不需要修改代碼。緩存記錄的過期--你可以有最大限度的控制緩存對象的過期,包括可插入式的刷新策略(如果默認性能不需要時)。
OSCache是把緩存存放成Map的形式,默認情況下緩存的key由請求的URL和查詢字符串組成。
從http://www.opensymphony.com/oscache/ 獲取OSCache合適版本,這裏我們下載了oscache-2.4-full.zip
解壓oscache-2.4-full.zip,把其中的oscache-2.4.jar 和解壓根目錄的lib文件夾下的commons-logging.jar引入到項目中。
把解壓根目錄etc文件夾下的oscache.properties文件複製到項目的src目錄下。
<%@ taglib uri="/WEB-INF/lib/oscache-2.4.jar" prefix="cache" %>
<cache:cache> user=${param.user } </cache:cache>
<cache:cache scope="session"> user=${param.user } </cache:cache>
<cache:cache key="user"> user=${param.user } </cache:cache>
這樣,緩存的key爲user,這時不管給URL中的user變量賦任何值,都只會得到一份緩存(即以user作爲key的value值)。
<cache:cache key="user" time="23"> user=${param.user } </cache:cache>
這樣就設置了局部緩存時間爲23秒
<cache:cache key="user" time="23" refresh="${param.refresh }"> user=${param.user } </cache:cache>
這樣,URL傳遞過來的參數爲true時將自動清除緩存。
<cache:flush scope="application" />
<cache:flush scope="session" key="user" />
<cache:flush scope="session" group="usergroup" />
在web.xml中加入OSCache的相關Filter,並作需要的設置:
<filter> <filter-name>CacheFilter</filter-name> <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class> <init-param> <param-name>time</param-name> <param-value>7200</param-value> </init-param> <init-param> <param-name>scope</param-name> <param-value>application</param-value> </init-param> </filter> <filter-mapping> <filter-name>CacheFilter</filter-name> <url-pattern>/cache/*</url-pattern> </filter-mapping>
#緩存到硬盤上 cache.memory=false #緩存到硬盤上時需要設置,設置持久化類DiskPersistenceListener,持久化到硬盤上 cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener #緩存到硬盤上時需要設置,緩存到硬盤上的路徑 cache.path=D:\\myapp\\cache #設置緩存數量 cache.capacity=1000 #設置緩存在內存溢出時緩存到硬盤上 cache.persistence.overflow.only=true