`
jayjayjaylun
  • 浏览: 90094 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多
一、缓存整个页面
        在OSCache组件中提供了一个CacheFilter用于实现页面级的缓存,主要用于对web应用中的某些动态页面进行缓存,尤其是那些需要生成PDF格式文件/报表、图片文件等的页面,不仅减少了数据库的交互、减少数据库服务器的压力,而且对于减少web服务器的性能消耗有很显著的效果。
这种功能的实现是通过在web.xml中进行配置来决定缓存哪一个或者一组页面,而且还可以设置缓存的相关属性,这种基于配置文件的实现方式对于J2EE来说应该是一种标准的实现方式了。
[注] 只有客户访问时返回http头信息中代码为200(也就是访问已经成功)的页面信息才能够被缓存。

        修改web.xml,增加如下内容,确定对/testContent.jsp页面进行缓存。


<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>600</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>

<!-对所有jsp页面内容进行缓存-->

<url-pattern>*.jsp</url-pattern>

</filter-mapping>
 

        在页面级缓存的情况下,可以通过设置CacheFilter的初始属性来决定缓存的一些特性:time属性设置缓存的时间段,默认为3600秒,可以根据自己的需要只有的设置,而scope属性设置,默认为application,可选项包括application、session。

二、缓存页面的部分
1、OSCache标签库配置
(1) 从src\webapp\WEB-INF\classes或etc目录取得soscache.tld文件,放在CLASSPATH下(src根目录或发布环境的/WEB-INF/classes  目录)。该文件定义了OSCache的定义。
(2) 将下列代码加入web.xml文件中:


<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>
</taglib>
 

2、cache标签

        这是OSCache提供的标签库中最重要的一个标签,包括在标签中的内容将应用缓存机制进行处理,处理的方式将取决于编程者对cache标签属性的设置。
        第一次请求到达时,标签中的内容被处理并且缓存起来,当下一个请求到达时,缓存系统会检查这部分内容的缓存是否已经失效,主要是以下几项:
        (1)缓存时间超过了cache标签设置的time或者duration属性规定的超时时间 
        (2)cron属性规定的时间比缓存信息的开始时间更晚 
        (3)标签中缓存的内容在缓存后又被重新刷新过 
        (4)其他缓存超期设定 
        如果符合上面四项中的任何一项,被缓存的内容视为已经失效,这时被缓存的内容将被重新处理并且返回处理过后的信息,如果被缓存的内容没有失效,那么返回给用户的将是缓存中的信息。
        cache标签的常用属性说明:


key
 标识缓存内容的关键词。在指定的作用范围内必须是唯一的。默认的key是被访问页面的URI和后面的请求字符串。可以在同一个页面中使用很多cache标签而不指定他的key属性,这种情况下系统使用该页面的URI和后面的请求字符串,另外再自动给这些key增加一个索引值来区分这些缓存内容。但是不推荐采用这样的方式。
 
scope
 缓存发生作用的范围,可以是application或者session。默认为application。
 
time
 缓存内容的时间段,单位是秒,默认是3600秒,也就是一个小时,如果设定一个负值,那么这部分被缓存的内容将永远不过期。
 
duration
 指定缓存内容失效的时间,是相对time的另一个选择,可以使用简单日期格式或者符合USO-8601的日期格式。如:duration='PT5M' duration='5s'等。
 
cron
 指定缓存内容失效表达式,见“Cron表达式基本语法”。
 
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,则这个值不起作用。
 

        这些属性可以单独使用,也可以根据需要组合使用。

3、Cron表达式基本语法
        通过Cron表达式我们可以很灵活的设置缓存的失效时间,Cron表达式包括5个字段分别为Minute,Hour, DOM(Day Of Month), Month,DOW(Day Of Week)。他们顺序地对应了5个位置。当某个位置上的值为*时,表示该位置上的任意时间。另外还提供了指定时间的操作符号"-",",","/",他们分别表示一段时间范围,具体的时间,以及递增的时间段。下面是几个例子说明一下Cron表达式的基本应用: 
        (1) "10/20 * * * *" :因是第一个位置,并且是一个递增的表达式,所以表达式指定的是每个小时的第10分钟,第30分钟,第50分钟缓存内容失效。
        (2) "* 8-18/4 * * *" :指定每天早上8点到晚上6点之间,每4个小时缓存内容失效。  等同于"* 8,12,16 * * *"。
        (3) "* * * * 1-5":表示每个星期一到星期五内容失效。

4、Cache标签实例分析
        (1) 最简单的cache标签用法。使用默认的关键字来标识cache内容,超时时间是默认的3600秒。 <oscache:cache>
<%
//自己的JSP代码内容
%>
</oscache:cache>
 
        (2) 用自己指定的字符串标识缓存内容,并且设定作用范围为session。
<oscache:cache key="foobar" scope="session">
<%
//自己的JSP代码内容
%>
</oscache:cache> 
 
        (3) 动态设定key值,使用自己指定的time属性设定缓存内容的超时时间,使用动态refresh值决定是否强制内容刷新。因为OSCache使用key值来标识缓存内容,使用相同的key值将会被认为使用相同的的缓存内容,所以使用动态的key值可以自由的根据不同的角色、不同的要求决定使用不同的缓存内容。
<oscache:cache key="<%= product.getId() %>" time="1800" refresh="<%= needRefresh %>">
<%
//自己的JSP代码内容
%>
</oscache:cache> 
 
        (4) 设置time属性为负数使缓存内容永不过期
<oscache:cache time="-1">
<%
//自己的JSP代码内容
%>
</oscache:cache>
 
        (5) 使用duration属性设置超期时间
<oscache:cache  duration='PT5M'>
<%
//自己的JSP代码内容
%>
</oscache:cache>
 
        (6) 使用mode属性使被缓存的内容不加入给客户的响应中
<oscache:cache  mode='silent'>
<%
//自己的JSP代码内容
%>
</oscache:cache>
 

5、flush标签
        这个标签用于在运行时刷新缓存。只有运行flush标签后再次访问相关缓存项时才执行刷新。
        属性说明:
scope[all]
 指定要刷新的范围。可选的值是"application", "session" 和 nul。null(到底是null量还是all呀)值指定刷新所有的缓存(是指使用cache标签的缓存)。
 
key
 当指定了scope和key值时,刷新唯一的缓存项。当这个缓存项下次被访问时将被刷新。只指定一个key值而没有指定scope不起作用。
 
group
 指定一个组时将刷新所有这个组中的缓存项。只指定一个group值而没有指定scope不起作用。
 
pattern
 任意包含pattern属性指定的值的缓存项都将被刷新。只指定一个pattern值而没有指定scope不起作用。 (注意:OSCache项目组已经不赞成使用pattern这个属性赖刷新缓存,二是鼓励使用具有更好的灵活性和性能的group属性来代替)
 
language
 使用ISO-639定义的语言码来发布不同的缓存内容(under an otherwise identical key)。要在一个多语言网站上同一段JSP代码不同用户的参数提供不同的语言时,这个属性会很有用。
 

6、usecached标签
        <usecached />:必须嵌套在<cache>标签中。
        属性说明:
use
 告诉所在的<cache>标签是否使用已经缓存的内容(缺省为true,使用缓存的内容)。可以使用这个标签来控制缓存。比如使用<frush>标签刷新某个key的缓存,但可以在必要的地方即使这样的强制刷新也仍然使用缓存内容而不刷新。 
 
        示例代码如下:
<oscache:cache>
     <% try { %>
     ... some jsp content ...
     <% } catch (Exception e) { %>
          <cache:usecached />
     <% } %>
</oscache:cache>
 
7、addgroup标签
        <addgroup />:必须嵌套在<cache>标签中。It allows groups to be dynamically added to a cached block. It is useful when the group(s) a cached block should belong to are unknown until the block is actually rendered. As each group is 'discovered', this tag can be used to add the group to the block's group list.
        属性说明:
group- req
 The name of the group to add the enclosing cache block to.  
 
        示例代码如下:
<oscache:cache key="test1">

<oscache:addgroup group="group1" />

... some jsp content ...

<oscache:addgroup group="group2" />

... some more jsp content ...

</oscache:cache>
 

8、使用标签的特殊说明

        (1) 标签的属性值如果动态生成,则需要先把动态生成的值赋予一个变量,再使用JSP 表达式把动态值赋予对应的属性。
<!--正确的写法:-->

<%

String keyValue = (String)request.getAttribute("keyValue");

if(keyValue == null)

       keyValue = "";

%>

<oscache:cache  refresh='<%=keyValue%>'>……</ oscache:cache >

<!--不正确的写法:-->

<oscache:cache  refresh='<%=(String)request.getAttribute("keyValue")%>'>

<!-属性的值此时为字符串“<%=(String)request.getAttribute("keyValue")%>”--->

</ oscache:cache >
 

        (2) 标签的属性值对boolean是强类型的,比如cache的refresh属性要求为true或false,示例如下:
<!--正确的写法:-->

<oscache:cache  refresh='true'>……</ oscache:cache >

<!--正确的写法:-->

<%

String needRefresh = (String)application.getAttribute("needRefresh");

if(needRefresh == null)

       needRefresh = "false";

boolean t_f = Boolean.valueOf(needRefresh).booleanValue();

%>

<oscache:cache  refresh='<%=t_f %>'>……</ oscache:cache >

<!--不正确的写法:-->

<oscache:cache  refresh='<%= needRefresh %>'>……</ oscache:cache >

看自带列子....
分享到:
评论

相关推荐

    OSCache配置说明文档

    5.3.1 OSCache配置 在代码中通过OSCache API创建和管理缓存。例如,使用`CacheManager.getInstance().getCache("myCache")`获取名为“myCache”的缓存实例,然后进行对象的存取操作。 6. 使用示例 此处可给出具体的...

    springMvc+Mybatis+spring3.0+oscache配置文件

    综上所述,这个压缩包提供的配置文件涵盖了Spring MVC的Web应用开发、MyBatis的数据访问、Spring 3.0的依赖注入和AOP以及oscache的缓存管理等多个方面,对于理解和学习这些技术的集成应用非常有帮助。在实际项目中,...

    OSCACHE配置URL实现页面缓存的Fliter(修改配置无需重启)

    标题 "OSCACHE配置URL实现页面缓存的Filter(修改配置无需重启)" 提示我们讨论的是一个使用OSCache(OpenSymphony Cache)库来缓存Web应用程序中特定URL页面的过滤器配置。OSCache是一个开源的Java缓存框架,用于提高...

    OSCACHE配置,文档,示例,JAR包

    ### 一、OSCache配置 OSCache的配置主要通过XML文件进行,一般情况下,这个文件被称为`oscache.xml`。配置文件包括了缓存管理、缓存策略、序列化方式等多个方面。以下是一些关键配置元素的解释: 1. **`&lt;caches&gt;`*...

    SpringMVC +Mybatis+Spring+oscache配置文件

    在实际项目中,这些配置文件会结合使用,形成一个完整的Spring MVC、Mybatis、Spring和oscache的集成环境,实现高效的数据访问、业务逻辑处理和页面展示。通过合理的配置,可以优化性能、增强可维护性和扩展性。

    oscache详细配置文档

    本文将详细介绍 OSCache 的配置和使用方法。 **一、缓存整个页面** OSCache 提供了一个名为 `CacheFilter` 的过滤器,该过滤器用于实现页面级别的缓存。通过在 `web.xml` 文件中配置,我们可以指定哪些页面或一组...

    oscache缓存技术入门实例

    三、osCache配置 osCache的配置主要通过XML文件完成,包括缓存配置、更新策略、缓存监听器等。例如: ```xml diskPersistent="false" timeToIdleSeconds="120" timeToLiveSeconds="120" ...

    教你如何用好oscache的详细文档

    3. **初始化 osCache**:在应用启动时加载配置并初始化 osCache。 4. **使用缓存**:通过 API 进行缓存操作,如 put、get、remove 等。 ### 六、osCache 的优缺点 优点: - **性能提升**:显著减少数据库交互,...

    Oscache使用教程

    **二、Oscache配置** 1. **引入依赖**:在项目中,你需要在构建文件(如Maven的pom.xml或Gradle的build.gradle)中添加Oscache的依赖。 2. **初始化配置**:在Java代码中,通过`org.oscache.core.CacheManager`...

    oscache缓存使用总结.doc

    以下是对OSCache配置和使用过程的详细说明: 1. **下载与安装**: 首先,从官方网站http://www.opensymphony.com/oscache/download.html下载适合的OSCache版本。然后,将解压后的`oscache.jar`文件放入项目中的`/...

    oscache缓存配置

    《osCache缓存配置详解》 osCache是Java平台上的一个高效、易用的缓存解决方案,它由Tuckey组织开发,广泛应用于各种Web应用中,以提高数据读取速度,减轻数据库压力。osCache的核心功能是提供了一个内存中的对象...

    Oscache简单实例

    **Oscache配置** Oscache的配置主要通过`.properties`文件进行,如`oscache.properties`和`oscache (2).properties`。这两个文件可能包含不同的配置项或用于不同环境的配置。 常见的配置项包括: - `...

    OSCache学习例子 实例

    2. **配置OSCache**:创建一个`oscache.properties`配置文件,定义缓存的大小、过期策略、是否启用分布式缓存等参数。例如: ``` cache.size=1000 cache.memoryStoreEvictionPolicy=LRU distributed.cache=false...

    oscache处理

    - 配置osCache插件:首先需要将osCache的jar包添加到项目类路径中,然后在struts.xml配置文件中引入osCache拦截器,并配置相应的拦截规则。 2. **iBatis与osCache**: - iBatis是一个轻量级的持久层框架,它允许...

    oscache缓存技术应用

    OSCache的jsp cache标签在实际应用中十分常见,其详细的配置说明可以在OSCache的在线文档中找到。 通过测试,我们可以发现使用Cache能够有效减缓随着循环次数增加而产生的性能下降,使用Cache时CPU利用率可达到90%...

    OSCache需要的包

    `oscache.properties` 是OSCache的配置文件,它包含了缓存的设置参数,例如缓存的大小、过期策略、是否启用缓存更新监听器等。开发者可以通过修改这个文件来定制OSCache的行为,以适应不同的应用需求。 `oscache-...

    Oscache框架的搭建步骤

    6. **集成到JSP页面**:在JSP页面中引入Oscache标签库,使用`&lt;%@taglib uri="oscache" prefix="cache"%&gt;`声明,其中`uri`值应与`web.xml`中配置的`&lt;taglib-uri&gt;`一致。 7. **实现缓存逻辑**:在JSP页面中利用...

    oscache-2.4.1-full

    - `readme.txt`:包含了关于如何安装、配置和使用OSCache的指南,以及可能的变更和注意事项。 - `www.pudn.com.txt`:可能是来源或者版权信息,也可能包含额外的说明或链接。 - `src`:源代码目录,对于开发者来...

Global site tag (gtag.js) - Google Analytics