WEB 页面缓存的实现 --OSCache

最近在自己写的项目中添加了页面缓存技术,

分为两钟缓存: 局部缓存,全局缓存 

总结一下 


一: 什么是OSCache

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


二 :使用OSCache需要的jar



下载路径:http://www.opensymphony.com/oscache/
oscache.jar
\lib\commons-logging.jar


配置步骤:
第一步:把上述两个jar文件放置在WEB-INF/lib目录下.
第二步:把oscache安装目录下的/etc/oscache.properties 文件放入 /WEB-INF/classes目录.开发阶段,我们可以把该文件放置在src目录.


三 :OSCache的局部缓存




在实际项目钟局部缓存使用的情况很少
我们使用Oscache的标签<oscache></oscache>来进行页面的局部缓存.使用方法如下:
<%@taglib uri="http://www.opensymphony.com/oscache" prefix=“oscache"%>

<oscache:cache  key=“name”>
name=${param.name}
</oscache:cache>
这时候缓存将以name为key,不再是请求的URI+查询字串组成,所以如果你访问/oscache/index.jsp?name=ttt和/oscache/index.jsp?name=ppp将得到一份缓存。


<oscache:cache key="name" scope="session">
name=${param.name}
</oscache:cache>
缓存范围设置为session,这时候缓存保存在用户的session中,如果用户的把浏览器关闭,再重新打开一个新浏览器,原来缓存的内容将不存在。


人为管理缓存<flush />标签:
<oscache:flush scope="application" /> 
清除application范围内的所有缓存
<oscache:flush scope="session" key="foobar" />
清除session范围内的key为foobar的缓存。


<oscache:flush scope="application" group="currencyData" />
清除application范围内组名为currencyData内的所有缓存。

四:OSCache的全局缓存


例如约定:商品页面访问量特别大,给商品页面缓存。 如某商主页等

主要步骤:

a : 在web.xml 配置拦截器

页面全局缓存将使用Filter实现(巴巴运动网产品列表显示采用的方案):
<filter>
<filter-name>
oscache</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>oscache</filter-name>
<url-pattern>/product/*</url-pattern>
</filter-mapping>



缓存的key将以请求的URI+查询字串组成,如果你访问/oscache/index.jsp?name=ttt和/oscache/index.jsp?name=ppp将得到两份缓存。
缓存是在初次访问页面时进行的,后续的请求将会返回缓存中的内容。缓存中存放的内容为页面返回给用户的html源代码。


b. 创建持久化缓存 (不创建默认是保存在内存的application)

创建oscache.properties
这个配置文件必须在classpath下面:

cache.memory=true
指定是否使用内存缓存,默认值为true,即使用内存缓存。
cache.capacity
指定缓存的容量,默认的容量是无限的。我们可以为它设置缓存数量,如:
cache.capacity=100000


如果我们要使用硬盘缓存,可以这样设置:
cache.memory=false
cache.path=d:\\cache  (指定,缓存保存的路径,注意:路径应采用双\符)
cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener
cache.persistence.class用于设置持久化类。

测试缓存:

打一个断点  ,进入请求处理代码 ,第一次断点必须走,第二次断点不走,走缓存页面。 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值