OSCache的基本使用

红薯 发布于 2008/10/05 17:22
阅读 2K+
收藏 18

 

首先,在TOMCAT发布一个名为test的应用,然后http://www.opensymphony.com/oscache/download.html下载最新版本的OSCache。我下载的是oscache-2.1-full.zip。解压此文件把oscache-2.1.jar以及lib/core目录下的commons-collections- 3.1.jar和commons-logging.jar文件拷贝到test应用的WEB-INF/LIB目录下。把etc/scache.properties和oscache.tld拷贝到test应用的WEB-INF /CLASSES目录下。

修改web.xml文件,加入

<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>
</taglib>


现 在我们就可以使用OSCache了。

一、几个在JSP中的基本用法

<cache:cache>
<%

Syste.out.println("Test OSCache!");
//需要缓存的JSP代码,默认 缓存时间是3600
%>
</cache:cache>

<cache:cache key="first" scope="session">
<%
//需要缓存的JSP代码,此处指定缓存作用的范围是session ,并且key值是first
%>
</cache:cache>

<cache:cache key="first" time="600" refresh="<%=needRefresh%>">
<%
//需要缓存的JSP代码,此处指定缓存的时间 是600秒 ,
//且通过一个参数动态判断是否需要缓存,如此处time为-1则被缓存的内容永不过期
%>
</cache:cache>
<cache:cache key="first" cron="0 2 * * *" >
<%
//通过 Cron表达式指定每天的早上2点钟缓存的内容失效
%>
</cache:cache>

<cache:flush scope="application" /> //刷新application中的缓存
<cache:flush scope="session" key="first" /> //刷新session中的缓存

二、 Cron表达式基本语法

通过Cron表达式我们可以很灵活的设置缓存的失效时间,Cron表达式包括5个 字段分别为Minute,Hour, DOM(Day Of Month), Month,DOW(Day Of Week)。他们顺序地对应了5个位置。当某个位置上的值为*时,表示该位置上的任意时间。另外还提供了指定时间的操作符号"-",",","/",他们 分别表示一段时间范围,具体的时间,以及递增的时间段。下面是几个例子说明一下Cron表达式的基本应用,有兴趣的也可以查看下OScache的doc文 档。

"10/20 * * * *" :因是第一个位置,并且是一个递增的表达式,所以表达式指定的是每个小时的第10分钟,第30分钟,第50分钟缓存内容失效。

"* 8-18/4 * * *" :指定每天早上8点到晚上6点之间,每4个小时缓存内容失效。  等同于"* 8,12,16 * * *"

"* * * * 1-5":表示每个星期一到星期五内容失效。
 
三、 CashFilter的使用

CashFilter是通过过滤器来缓存一个完整的JSP页面或者我们生成的二进 制文件,包括生成的图片,EXCEL,WORLD,PDF等。

<filter>
      <filter-name>CacheFilter</filter-name>
<filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<!- 需要缓存的JSP页面 -->
      <url-pattern>/needCache.jsp</url-pattern>
</filter-mapping>

注意:只有返回http头信息中代码为200(即成功状态)的才能被缓存。

四、oscache.properties文件的配置

cache.memory 指定是否使用内存缓存(默认为使用)
cache.persistence.class 当使用磁盘方式或数据库等其他方式缓存时指定
cache.path 当使用磁盘缓存时,须指定
cache.capacity 缓存大小
cache.unlimited.disk 对于磁盘缓存是否限制大小

加载中
返回顶部
顶部