<cache:cache>是OSCache提供的标签库中最重要的一个标签,包括在标签中的内容将应用缓存机制进行处理,处理的方式将取决于编程者对cache标签属性的设置。
第一次请求到达时,标签中的内容被处理并且缓存起来,当下一个请求到达时,缓存系统会检查这部分内容的缓存是否已经失效,主要是以下几项:
1. 缓存时间超过了cache标签设置的time或者duration属性规定的超时时间;
2. cron属性规定的时间比缓存信息的开始时间更晚;
3. 标签中缓存的内容在缓存后又被重新刷新过;
4. 其他缓存超期设定
如果符合上面四项中的任何一项,被缓存的内容视为已经失效,这时被缓存的内容将被重新处理并且返回处理过后的信息,如果被缓存的内容没有失效,那么返回给用户的将是缓存中的信息。
cache标签的属性说明
(这些属性可以单独使用,也可以根据需要组合使用)
key - 标识缓存内容的关键词。在指定的作用范围内必须是唯一的。默认的key是被访问页面的URI和后面的请求字符串。你可以在同一个页面中使用很多cache标签而不指定他的key属性,这种情况下系统使用该页面的URI和后面的请求字符串,另外再自动给这些key增加一个索引值来区分这些缓存内容。但是不推荐采用这样的方式。
scope - 缓存发生作用的范围,可以是application或者session。
time - 缓存内容的时间段,单位是秒,默认是3600秒,也就是一个小时,如果设定一个负值,那么这部分被缓存的内容将永远不过期。
duration - 指定缓存内容失效的时间,是相对time的另一个选择,可以使用简单日期格式或者符合USO-8601的日期格式。如:duration='PT5M' duration='5s'等。
refresh - false 或者true。如果refresh属性设置为true,不管其他的属性是否符合条件,这部分被缓存的内容都将被更新,这给编程者一种选择,决定什么时候必须刷新。
mode - 如果不希望被缓存的内容增加到给用户的响应中,可以设置mode属性为"silent"。此时被缓存的部分不在页面上显示,而其它任意的mode属性值都会将缓存的部分显示到页面上。
groups - 指定当前cache标签所属的组,可使用“,”分割组名。这样就可以对缓存项进行分组了。如果缓存项依赖于应用的其它部分或其它数据,分组就有了用武之地——当这种依赖改变时(刷新相关的组),这个组的所有缓存项都将过期。
language - 使用ISO-639定义的语言码来发布不同的缓存内容(under an otherwise identical key)。要在一个多语言网站上同一段JSP代码不同用户的参数提供不同的语言时,这个属性会很有用。
refreshpolicyclass - 指定自定义的刷新策略类的全限定类名。这个类继承自com.opensymphony.oscache.web.WebEntryRefreshPolicy
refreshpolicyparam - 指定任意需要传给refreshpolicyclass的参数。如果没有指定refreshpolicyclass,则这个值不起作用。其它可用的属性还包括:cron 、groups、language、refreshpolicyclass、refreshpolicyparam。
Cache标签实例分析
最简单的cache标签用法。使用默认的关键字来标识cache内容,超时时间是默认的3600秒。
<oscache:cache>
<% //自己的JSP代码内容%>
</oscache:cache>
设置time属性为负数使缓存内容永不过期
<oscache:cache time="-1">
<% //自己的JSP代码内容 %>
</oscache:cache>
使用duration属性设置超期时间
使用mode属性使被缓存的内容不加入给客户的响应中
<oscache:cache mode='silent'>
<% //自己的JSP代码内容 %>
</oscache:cache>
用自己指定的字符串标识缓存内容,并且设定作用范围为session。
<oscache:cache key="foobar" scope="session">
<% //自己的JSP代码内容%>
</oscache:cache>
动态设定key值,使用自己指定的time属性设定缓存内容的超时时间,使用动态refresh值决定是否强制内容刷新。因为OSCache使用key值来标识缓存内容,使用相同的key值将会被认为使用相同的的缓存内容,所以使用动态的key值可以自由的根据不同的角色、不同的要求决定使用不同的缓存内容。
<oscache:cache key="<%= product.getId() %>" time="1800" refresh="<%= needRefresh %>">
<% //自己的JSP代码内容%>
</oscache:cache>
flush标签:这个标签用于在运行时刷新缓存。只有运行flush标签后再次访问相关缓存项时才执行刷新。
<oscache:flush key="cacheKey" scope="application" />
usecached标签:必须嵌套在<cache>标签中。告诉所在的<cache>标签是否使用已经缓存的内容(缺省为true,使用缓存的内容)。可以使用这个标签来控制缓存。比如使用<frush>标签刷新某个key的缓存,但可以在必要的地方即使这样的强制刷新也仍然使用缓存内容而不刷新。
<oscache:cache>
<% try { %>
... some jsp content ...
<% } catch (Exception e) { %>
<cache:usecached />
<% } %>
</oscache:cache>
使用标签的特殊说明
标签的属性值如果动态生成,则需要先把动态生成的值赋予一个变量,再使用JSP 表达式把动态值赋予对应的属性。
<!--正确的写法:-->
<%
String keyValue =
(String)request.getAttribute("keyValue");
if(keyValue == null)
keyValue = "";
%>
<oscache:cache refresh='<%=keyValue%>'>
......
</oscache:cache >
<!--不正确的写法:-->
<oscache:cache refresh=
'<%=(String)request.getAttribute("keyValue")%>'>
......
</oscache:cache >
属性的值此时为字符串:"<%=(String)request.getAttribute("keyValue")%>"
标签的属性值对boolean是强类型的,比如cache的refresh属性要求为true或false,示例如下:
<!--不正确的写法:-->
<!--正确的写法:-->
<oscache:cache refresh="true">
......
</oscache:cache >
<!--正确的写法:-->
<% String needRefresh =
(String)application.getAttribute("needRefresh");
if(needRefresh == null) needRefresh = "false";
boolean boo =
Boolean.valueOf(needRefresh).booleanValue(); %>
<oscache:cache refresh='<%=boo %>'>
......
</oscache:cache >
<!--不正确的写法:-->
<oscache:cache refresh='<%= needRefresh %>'>
......
</oscache:cache >
分享到:
相关推荐
同时,需要在JSP页面中引入OSCache的标签库,并按照文档指导在页面上使用相应的缓存标记。 6. **性能监控与管理**: OSCache提供了监控工具,允许开发者查看缓存的性能统计,如命中率、缓存大小、过期策略等,便于...
- 在JSP页面中使用:通过JSP标签库(Taglib)引入osCache,如`<oscache:cache>`,并在标签中指定缓存键和内容。 - 编写Java代码:在Servlet或Controller中,使用osCache API进行缓存操作。 **5. 示例应用** 以下是...
oscache还提供了一组JSP标签,使得在Web应用中实现缓存功能变得简单直观。例如,可以使用`<oscache:cache>`标签来缓存整个JSP页面或部分内容。 五、最佳实践与注意事项 1. **合理设置缓存大小**:根据系统资源和...
- **部分页面缓存**:使用 JSP 标签库(taglib)进行页面部分内容的缓存,如 `<oscache:cache>` 标签。 **四、示例与实践** 在 JSP 页面中,可以通过以下方式使用 OSCache 标签库进行缓存配置: ```jsp ...
由于标签提到了“源码”和“工具”,这可能意味着这些库是用于学习或者开发中的工具集合,以便理解如何在实际项目中应用缓存和加密技术。 在实际开发中,理解并合理利用这些库可以极大地提升应用性能和安全性。例如...
- `oscache.tld`定义了oscache提供的标签库结构,便于在JSP页面中调用缓存相关的标签。 #### 3. 修改web.xml 在项目的`web.xml`文件中添加对oscache标签库的支持,具体代码如下: ```xml <jsp-config> <taglib...
`cache`标签是OSCache的核心,它允许开发者在JSP页面中控制特定内容的缓存行为。当请求到达时,`cache`标签内的内容会被处理并存储在缓存中。后续请求会检查缓存是否过期,主要依据以下几个条件: - 缓存时间超过`...
OSCache的使用包括在JSP或Servlet中使用OSCache标签,例如`<oscache:cache>`,或者通过API进行编程式缓存操作。可以通过设置key和expiration时间来缓存特定内容,当数据变化时,可以自动更新缓存。 在实际应用中,...
OSCache 是一个高度流行的 J2EE 缓存框架,它为任何 Java 应用程序提供了高效且可扩展的缓存解决方案。它支持分段缓存,这意味着你可以对网页的特定部分进行缓存,提高整体性能。OSCache 被广泛应用于诸如 JBoss、...
- **部分页面缓存**:利用OSCache的JSP标签库实现页面部分内容的缓存。 OSCache的使用并不复杂,开发者可以通过官方文档进一步了解详细配置和高级功能,例如缓存预热、缓存同步、缓存锁定等,以充分利用其性能优化...
3. **配置TLD文件**:将`oscache.tld`文件放置于`WEB-INF`目录中,该文件定义了Oscache的标签库,用于JSP页面中的缓存操作。 4. **修改web.xml**:在`web.xml`中注册Oscache的标签库,通过`<taglib>`元素指定其URI...
在这个特定的案例中,`oscache.tld` 提供了关于OSCache JSP标签的元数据,如标签的名称、属性、行为等,使得开发者能够在JSP页面上方便地使用OSCache提供的缓存功能。 `oscache.properties` 是OSCache的配置文件,...
Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。
OSCache 是一个强大的开源缓存解决方案,主要用于提升 Java Web 应用程序的性能。它能够缓存页面内容,减轻数据库压力,并减少服务器的资源消耗。本文将详细介绍 OSCache 的配置和使用方法。 **一、缓存整个页面** ...
2. **部分页面缓存**:通过使用 OSCache 提供的 Taglib,可以在 JSP 页面中使用 `<cache>` 标签来缓存特定部分的内容。在 `web.xml` 中添加对 Taglib 的支持,然后在 JSP 页面中引入标签库,如 `...
OSCache是一个高性能、易于使用的缓存组件,主要用于Web应用程序中数据的缓存管理。它可以极大地提高Web应用的性能,通过减少对数据库或其他后端系统的访问频率来降低服务器负载。OSCache支持多种缓存策略,并且可以...
在JSP页面中,我们可以通过`<%@ taglib uri="cachetags" prefix="cache" %>`来引入OSCache的标签库,并使用`<cache:cache>`标签来指定需要缓存的页面片段。 例如: ```jsp ... 页面内容 ... ``` #### 四、...