1.安装过程
从http://www.opensymphony.com下载OSCache,目前最新的是oscache-2.4.1-full版本。
从解压缩目录取得oscache.jar 文件放到 /WEB-INF/lib 或相应类库目录 目录中,
如果你的jdk版本为1.3.x,建议在lib中加入Apache Common Lib 的commons-collections.jar包,如jdk是1.4以上则不必
从etc目录取得oscache.properties 文件,放入src根目录
win类路径类似为c:\\app\\cache
unix类路径类似为/opt/myapp/cache
拷贝OSCache标签库文件oscache.tld(路径:oscache-2.4.1-full\etc\META-INF\) 到/WEB-INF/classes目录,应用发布之后要确定相应的目录下也应该有oscache.tld这个文件
现在你的应用目录类似如下:
$WEB_APPLICATION\WEB-INF\lib\oscache.jar
$WEB_APPLICATION\WEB-INF\classes\oscache.properties
$WEB_APPLICATION\WEB-INF\classes\oscache.tld
cache.memory=true
值为true 或 false ,默认为在内存中作缓存,
如设置为false,那cache只能缓存到数据库或硬盘中,那cache毫无意义
缓存元素个数
cache.persistence.class
持久化缓存类,如此类打开,则必须设置cache.path信息
cache.cluster 相关
为集群设置信息。
如
cache.cluster.multicast.ip为广播IP地址
cache.cluster.properties为集群属性
3.OSCache的基本用法
首先建立量个jsp页面cacheDemo1.jsp和cacheDemo2.jsp
cacheDemo1.jsp 内容如下
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/classes/oscache.tld" prefix="oscache"%>
<html>
<body>
没有缓存的日期:
<%=new Date()%>
<br>
<!--自动刷新-->
<oscache:cache time="30">
每30秒刷新缓存一次的日期: <%=new Date()%>
</oscache:cache>
<br>
<!--手动刷新-->
<oscache:cache key="testcache">
手动刷新缓存的日期: <%=new Date()%>
</oscache:cache>
<br>
<a href="cache2.jsp">手动刷新</a>
</body>
</html>
cacheDemo2.jsp 手动刷新页面:
<%@ taglib uri="/WEB-INF/classes/oscache.tld" prefix="oscache"%>
<html>
<body>
缓存已刷新...<p>
<oscache:flush key="testcache" scope="application"/>
<a href="cacheDemo1.jsp">返回</a>
</body>
</html>
我们还可以通过下面语句定义Cache的有效范围:
<cache:cache time="30" scope="session">
...
</cache:cache>
如不定义scope,scope默认为Applcation
4. 缓存过滤器 CacheFilter
我们也可以在web.xml中定义缓存过滤器,定义特定资源的缓存。
<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>60</param-value>
</init-param>
<init-param>
<param-name>scope</param-name>
<param-value>session</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
上面定义将缓存所有.jsp页面,缓存刷新时间为60秒,缓存作用域为Session
注意:CacheFilter只捕获Http头为200的页面请求,即只对无错误请求作缓存,
而不对其他请求(如500,404,400)作缓存处理