使用oscache加速你的web程序

本文介绍了OSCache作为高性能J2EE缓存框架的应用实践,包括配置方法、使用示例及自定义对象缓存技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上找了一下关于web开发方面可使用的缓存技术,发现oscache是个好东西!找到一些网友写得不错的关于oscache入门的博文。转载一篇于此。

首先还是贴上原博文的地址:[url]http://leeboysam.blog.163.com/blog/static/214194020066181110300/[/url]

OSCache:她是现在最广泛缓存解决方案,采用的高性能的J2EE缓存框架, OSCache能用于任何Java应用程序。

这里可以下载到最新的OSCache的jar包:[url]http://java.net/downloads/oscache/[/url]

1、OSCache的配置

将下载的oscache-x.x.x-full.zip解压,将etc目录下的oscache.properties 、oscache.tld 及 oscache.jar,还有lib目录下的commons-logging.jar,jgroups-all.jar放到你工程下。具体位置如下:oscache.properties 、oscache.tld到src的根目录,三个jar包放在lib目录下。

然后要配置一下web.xml,加上以下配置。
	<jsp-config>
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>
</taglib>
</jsp-config>


好了,配置完成,现在可以测试一下了。编写一个页面如下,我们通过两个时间来对比就可以发现OSCache是否起作用啦。这里我们使用了OSCache的<os:cache>标签,“time='20'”代表缓存的过期时间。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="os" uri="oscache" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test</title>
</head>

<body>
<%=new Date()%><br>
<os:cache time="20"><br>
<%=new Date()%>
</os:cache>
</body>
</html>


2、基于过滤器Filter来配置OSCache。

OSCache还可以基于过滤器来进行缓存的配置。在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>/*</url-pattern>
</filter-mapping>


上面定义将缓存所有页面,缓存刷新时间为60秒,缓存作用域为Session。

注意,CacheFilter只捕获Http头为200的页面请求,即只对无错误请求作缓存,
而不对其他请求(如500,404,400)作缓存处理 。

[align=center]----------------------------------补充-------------------------------------[/align]
有时候,会发现使用oscache的自定义标签或者过滤器很难满足我们的一些缓存的需求,我们可以使用com.opensymphony.oscache.general.GeneralCacheAdministrator来对具体对象进行缓存。

GeneralCacheAdministrator主要对实现持久化对象的保存以及取出的相关的操作,主要方法如下:

Object getFromCache(String key)    //根据key获取缓存对象
Object getFromCache(String key, int refreshInterval) //refreshInterval时间内,根据key获取缓存对象
void putInCache(String key, Object obj) //保存被缓存对象
void flushAll() //删除所有被缓存的对象
void flushAll(Date date) //在指定的时间去删除所有被缓存的对象
void cancelUpdate(String key) //取消未确定的更新


以上例子本人已经测试通过,如果有什么问题可以在回复中提出,大家一起探讨。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值