http://www.javayou.com (收藏,设为首页)
当你不能再拥有时,你唯一能做的,就是让自己不要忘记 (手机请访问 http://3g.dlog.cn/javayou)

OSCache的基本使用

2005年2月2日(Wednesday) 10点12分 作者: 本站原创 天气: 心情: 一般

在上一篇文章《在JSP2.0中实现动态缓存》中,我们看到了使用缓存在WEB应中的作用,这次我们看看一种常用的缓存组件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 对于磁盘缓存是否限制大小

[Edit on 2005-02-02 10:12:39 By ld]
标签: 缓存 OSCache 
评论者: guyiboy 2005-2-17 16:29 (Thursday)

我正在学习这方面的东西,希望以后多帮忙

评论者: 胡凯 2005-2-18 11:50 (Friday)

相互交流,一起学习嘛!

姓名: 
邮箱:  {可选}
网址:  {可选} 此评论只有我和写日记的人查阅
校验码: ... <我看不清楚>
网记为您提供手机和互联网同步的个人主页,带给你不一样的体验