OSCache是个一个普遍采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有如下特色:缓存任何对象,你能够不受限制的缓存部分jsp页面或HTTP请求,任何java对象均可以缓存。拥有全面的API--OSCache API给你全面的程序来控制全部的OSCache特性。永久缓存--缓存能随意的写入硬盘,所以容许昂贵的建立(expensive-to-create)数据来保持缓存,甚至能让应用重启。支持集群--集群缓存数据能被单个的进行参数配置,不须要修改代码。缓存记录的过时--你能够有最大限度的控制缓存对象的过时,包括可插入式的刷新策略(若是默认性能不须要时)。html
OSCache是把缓存存放成Map的形式,默认状况下缓存的key由请求的URL和查询字符串组成。java
从http://www.opensymphony.com/oscache/ 获取OSCache合适版本,这里咱们下载了oscache-2.4-full.zipweb
解压oscache-2.4-full.zip,把其中的oscache-2.4.jar 和解压根目录的lib文件夹下的commons-logging.jar引入到项目中。缓存
把解压根目录etc文件夹下的oscache.properties文件复制到项目的src目录下。session
<%@ 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值)。app
<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时将自动清除缓存。jsp
<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