OSCache是一个开放式资源缓冲库,可从http://www.opensymphony.com/oscache免费下载。它包括一组JSP的标签,通过它们可以很容易的在你的程序中实现页面缓存,同时,还可以使用它的过滤器,可缓冲的不仅仅是JSP页面,还可以缓存任何Servlet生成的内容。
下面先介绍一下它的一些术语:
缓冲记录:存储在页面缓存器内的对象称为一个缓冲记录。在一个JSP程序中,它通常是一个JSP页面、JSP页面的一部分或Servlet的输出。
缓冲键码:它就像一个哈西表(Hash Table)。当在页面缓存中存储缓冲记录时,你必须提供缓冲键码来识别各个条目。在一个JSP程序中,你可能需要把几个请求参数组合在一起来形成缓冲键码,或者使用页面请求URI作为缓冲键码。
缓冲周期:是一个缓冲记录在保留在页面缓存器中的时间。对于一个显示数据时常更新的JSP页面,你应该设定一个短的缓冲周期。
缓冲域:是缓冲被存储在的作用域。你可以在应用程序域内存储缓冲记录,这样,缓冲记录可以被所有用户分享;或者在会话域,在前用户基础上存储缓冲记录。
安装OSCache
解压下载下来的文件包,将oscache.jar放到lib目录下,将oscache.properties和oscache.tld放到WEB-INF/classes下。在web.xml中加入标签库的配置:
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>
</taglib>
oscache.properties文件是它的配置,如果你像将缓存文件存放在硬盘上,并使用windows,在指定目录上需要使用\\。比如你的目录是c:\cache,那么应该写上c:\\cache。
OSCache JSP标签
使用这些标签很简单。你要做的是在需要缓存的JSP页面部分防止<os:cache>标签。以下JSP页面的示例表明了其实现方法:
<!--导入标签库-->
<%@ taglib uri="/WEB-INF/oscache.tld" prefix="os" %>
<!--开始使用-->
<os:cache time="60">
<!--这里是你要缓存的JSP代码-->
<os:cache>
怎么样很简单吧,你只需把你要缓存的代码用<os:cache>标签包围起来即可,这里缓存周期是60秒,你可以根据你的具体情况来修改。在这个例子中,我们没有指定一个缓冲键码,默认情况下,OSCache将使用请求URI作为缓冲记录的键码。也没有指定一个缓冲域,默认情况下将会使用应用程序域。
OSCacheServlet过滤器
我们现在可以用它的过滤器来缓冲Servlet的输出,通过使用com.opensymphony.module.oscache.web.filter.CacheFilter类来实现。现在你需要做的是在程序的web.xml中添加这个过滤器,以及为所有你希望缓存的URL样式添加过滤器映射。以下是web.xml文件,我们只给出需要的部分:
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.opensymphony.module.oscache.web.filter.CacheFilter</filter-class>
<init-param>
<param-name>time</param-name>
<param-value>60</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<uri-pattern>/servlets/*</url-pattern>
</filter-mapping>
过滤器元素应该在上下文参数之后,但在Servlet和监听器元素之前。
如同前面JSP的例子一样,我们同样设置了缓冲时间为60秒。其他的参数,如缓冲键码和缓冲域被省略,使用默认值。<filter-mapping>元素配置CacheFilter,以便它为匹配样式/servlets/*的所有请求URL缓冲相应输出。
这篇教程只是简单的介绍一下OSCache的用法,以后我会在继续添加,请继续关注我的博客!