正如本文前面所提到的,我们希望从网站的其余部分引用这个缓冲的代码块。这是因为,当一个用户增加了一个供拍卖的商品、或者出价竞购其他用户拍卖的商品时,我们希望刷新缓冲,使得导航条下一次被读取时具有最新的内容。虽然这些数据可能因为其他用户的活动而改变,但如果用户在网站上执行某个动作之后看到自己的清单仍未改变,他可能会感到非常困惑。 OSCache库提供的flush标记能够刷新缓冲内容。我们可以把下面的代码加入到处理用户动作且可能影响这一区域的页面之中: <cache:flush key="navbar" scope="session" /> 当用户下次访问它时,navbar缓冲块将被刷新。 至此为止,我们这个示例网站的构造工作已经完成且可以开始运行。下面我们来看看OSCache的异常处理能力。即使缓冲的内容已经作废,比如在缓冲块内出现了Java异常,OSCache标记库仍旧允许我们用编程的方法显示这些内容。有了这种异常控制功能,我们可以拆除数据库服务器和Web服务器之间的连接,而网站仍能够继续运行。JSP 1.2规范引入了TryCatchFinally接口,这个接口允许标记本身检测和处理Java异常。因此,标记可以结合这种异常处理代码,使得JSP页面更简单、更富有条理。 OpenSymphony正在计划实现其他的缓冲机制以及一个可管理性更好的主系统,它将使我们能够对缓冲使用的RAM和磁盘空间进行管理。一旦有了这些功能,我们就能够进一步提高网站的响应速度和可靠性。 使用范例: oscache.properties 文件配置向导 cache.memory 值为true 或 false ,默认为在内存中作缓存, 如设置为false,那cache只能缓存到数据库或硬盘中,那cache还有什么意义:) cache.capacity 缓存元素个数 cache.persistence.class 持久化缓存类,如此类打开,则必须设置cache.path信息 cache.cluster 相关 为集群设置信息。 如 cache.cluster.multicast.ip为广播IP地址 cache.cluster.properties为集群属性 3.OSCache的基本用法
cache1.jsp 内容如下 <%@ page import="java.util.*" %> <%@ taglib uri="oscache" prefix="cache" %> <html> <body> 没有缓存的日期: <%= new Date() %><p> <!--自动刷新--> <cache:cache time="30"> 每30秒刷新缓存一次的日期: <%= new Date() %> </cache:cache> <!--手动刷新--> <cache:cache key="testcache"> 手动刷新缓存的日期: <%= new Date() %> <p> </cache:cache> <a href="/cache2.jsp">手动刷新</a> </body> </html> cache2.jsp 执行手动刷新页面如下 <%@ taglib uri="oscache" prefix="cache" %> <html> <body> 缓存已刷新...<p> <cache:flush key="testcache" scope="application"/> <a href="/cache1.jsp">返回</a> </body> </html> 你也可以通过下面语句定义Cache的有效范围,如不定义scope,scope默认为Applcation <cache:cache time="30" scope="session"> ... </cache:cache>
4. 缓存过滤器 CacheFilter 你可以在web.xml中定义缓存过滤器,定义特定资源的缓存。 1 < filter > 2 < filter - name > CacheFilter </ filter - name > 3 < filter - class > com.opensymphony.oscache.web.filter.CacheFilter </ filter - class > 4 < init - param > 5 < param - name > time </ param - name > 6 < param - value > 60 </ param - value > 7 </ init - param > 8 < init - param > 9 < param - name > scope </ param - name > 10 < param - value > session </ param - value > 11 </ init - param > 12 </ filter > 13 14 15 < filter - mapping > 16 < filter - name > CacheFilter </ filter - name > 17 < url - pattern >* .jsp </ url - pattern > 18 </ filter - mapping > 上面定义将缓存所有.jsp页面,缓存刷新时间为60秒,缓存作用域为Session |