OScache为web配置缓存

来源:互联网 发布:流量推广软件 编辑:程序博客网 时间:2024/06/06 20:18

   OSCache标记库由OpenSymphony设计,它是一种开创性的jsp定制标记应用,提供了在现有jsp页面之内实现快速内存缓冲的功能。OSCache是一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部门jsp页面或HTTP请求,热河java对象都可以缓存。拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。永久缓存-缓存能随意的写入硬盘,甚至能让应用重启。支持集群-集群缓存数据能被单个的进行参数配置,不需要修改代码,包括可插入式的刷新策略。下面给出个样例:

新建web项目,要实现OSCache缓存,需要导入commons-logging.jar,oscache-2.4.1.jar两个包。

在jsp页面首部引入标签库:

<%@taglib uri="http://www.opensymphony.com/oscache" prefix="cache"%>


在OSCache中最重要的标签<cache:cache></cache:cache>


<cache:cache>       <%=new Date() %></cache:cache>

以上代码就实现了OSCache缓存,当刷新界面时,其中时间是不会改变。

第二种,带请求参数。

缓存的key将以请求的URL+查询字串组成,如果你访问/oscache/index.jsp?name=ttt和/oscache/index.jsp?name=ppp将得到两份缓存,缓存默认放在application范围,缓存时间默认为3600秒,即1小时。

<cache:cache>        name=${param.name }    </cache:cache>

jsp中是以上代码,我们访问/oscache/index.jsp?name=ttt,当我们改变name=ppp,刷新界面是否会改变,会改变,因为key为请求的URL+查询字串组成。


<cache:cache key="xxx">
    name=${param.name }
    </cache:cache>

当jsp是以上代码时,我们访问/oscache/index.jsp?name=ttt,当我们改变name=ppp,刷新界面,此时jsp内容会进行改变,因为key已经指定xxx,key不会发生改变。


<cache:cache key="xxx" time="10">    name=${param.name }    </cache:cache>

当如上代码所示,添加一个time属性,time属性为过期时间。当我们改变属性,在10秒内刷新界面不会发生改变。过去10秒后,再进行刷新界面,此时界面会发生改变。

<cache:cache key="xxx" time="50" refresh="${param.refresh }">    name=${param.name }    </cache:cache>

如上代码,在time=30时,我们想进行刷新缓存,指定refresh属性。当其值为true时,可以进行刷新缓存。如http://localhost:8080/oscache/index.jsp?name=xxx&refresh=true

此时刷新界面,改变name值,会发生变化。


以上都是页面的局部缓存。


下面介绍下全局缓存,指定什么页面进行缓存,通过filter实现:

<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>7200</param-value>    </init-param>    <init-param>        <param-name>scope</param-name>        <param-value>application</param-value>    </init-param></filter><filter-mapping>    <filter-name>CacheFilter</filter-name>    <url-pattern>/product/*</url-pattern></filter-mapping>

通过以上代码,所有的路径为/product/*的请求路径都会进行OSCache缓存,过期时间为7200秒。


通过OSCache缓存,可以显著提高web的性能,当一个用户访问一个页面时,如果不加缓存,会频繁的与数据库进行交互,这样效率就降低了,如果设置了OSCache缓存,在短时间页面一般不会发生改变,所有可以设置OSCache缓存,直接从缓存直接读取页面,效率有了非常大的提供。

OSCache相比Hibenate的二级缓存,性能也是非常好的,Hibenate的二级缓存,缓存后数据后,需要通过EL表达式读取到页面上,而OSCache缓存直接将整个页面数据缓存下来,只需要根据路径读取即可。


0 0