应用OSCache

Posted on 2006-04-07 10:24 砖头 阅读(320) 评论(0)  编辑  收藏 所属分类: oscache
OSCache  是OpenSymphony组织提供的一种WEB应用层的缓存组件。OSCache提供了内存和磁盘的两种缓存存储机制,并且提供了集群机制。与JSP2.0自带的Cache标签相比,Oscache显得功能更加灵活,强大,比如硬盘缓存,以及在下面将会提到的cron表达式定制复杂而灵活的缓存失效时间等。

首先,在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  对于磁盘缓存是否限制大小

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 0, comments - 0, trackbacks - 0, articles - 115

Copyright © 砖头