`
iqeq00
  • 浏览: 60460 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

OSCache 缓存解决方案

    博客分类:
  • J2EE
阅读更多

OSCache 缓存解决方案

 

1. OSCache 是什么?

 

    OSCache 标记库由 OpenSymphony 设计,它是一种开创性的缓存方案,

    它提供了在现有JSP 页面之内实现内存缓存的功能。OSCache 是个一个被广泛采用的、

    高性能的 J2EE 缓存框架,OSCache 还能应用于任何 Java 应用程序的普通的缓存解决方案。

 

2. OSCache 的特点

 

    a)  缓存任何对象:

         你可以不受限制的缓存部分 jsp 页面或 HTTP 请求,任何 java 对象都可以缓存。

    b)  拥有全面的 API:

         OSCache API 允许你通过编程的方式来控制所有的 OSCache 特性。

    c)  永久缓存:

         缓存能被配置写入硬盘,因此允许在应用服务器的多次生命周期间缓存创建开销昂贵的数据。

    d)  支持集群:

         集群缓存数据能被单个的进行参数配置,不需要修改代码。

    e)  缓存过期:

         你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能

         不能满足需要时)。

 

3. OSCache 的安装与配置

 

    a)  首先打开:http://java.net/downloads/oscache/下载最新版本的 OSCache,

         本次使用的版本是 2.4.1,暂时为最新版本。

 

    b)  将 oscache-2.4.1-full.zip 解压,如下图所示


 

    c)  解压后,将 oscache-2.4.1.jar、lib 目录里的 commons-logging.jar 一同放进你自己

         应用的 WEB-INF/lib 里,如果有原来有 commons-logging.jar,那么不要重复添加。

 

    d)  将 etc 目录下的 oscache.properties、oscache.tld 这 2 个文件放入你自己应用的

         /WEB-INF/classes 目录。开发阶段,我们可以把该文件放置在 src 目录下即可。

 

    e)  在你自己应用的 web.xml 里面添加配置信息,

         添加代码如下:

 

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

 

    现在我们就可以使用 OSCache 了。

 

4. OSCache 页面局部缓存

 

    a)  引入标签

         i.   <%@ taglib uri="oscache" prefix="cache" %>(在 src下放置了 oscache.tld文件)

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

            (在 src 下没有放置了 oscache.tld 文件)

 

    b)  标签用法

 

         i.   最简单的用法

 

<cache:cache>
    <%
        Syste.out.println("Test OSCache! ");
    %>
</cache:cache>

 

    缓存的key将以请求的URI+ 查 询 字 串 组 成 ,如果你访问

    /oscache/index.jsp?name=ttt 和/oscache/index.jsp?name=ppp 将得到两份缓存。

    缓存默认存放在 application 范围,缓存时间默认为 3600 秒,即 1 小时。

 

          ii.  指定缓存 key

 

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

 

    这时候缓存将以 name 为 key,不再是请求的 URI+查询字串组成,所以如果你访问

    /oscache/index.jsp?name=ttt 和/oscache/index.jsp?name=ppp 将得到一份缓存。

 

          iii. 指定缓存作用域

 

<oscache:cache key="name" scope="session">
    name=${param.name}
</oscache:cache>

 

    缓存范围设置为 session,这时候缓存保存在用户的 session 中,如果用户的把浏览器关闭,

    再重新打开一个新浏览器,原来缓存的内容将不存在。

 

          iv. 为缓存设置时间

 

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

 

   上面设置了缓存的时间为 10 秒,超过 10 秒后,缓存的内容将失掉。

    如此处时间为-1 则被缓存的内容永不过期。

 

          v.   通过 cron 表达式来设定缓存方案

 

<cache:cache key="first" cron="0 2 * * *" >
    <%
        //通过 Cron 表达式指定每天的早上 2 点钟缓存的内容失效
    %>
</cache:cache>

 

    详细请参考 cron 表达式

 

          vi.  清除缓存

 

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

 

    refresh 为 true 将会导致缓存的内容过期而被清除,简单地说,

    该属性为 true 用于清除缓存。

 

          vii. 人为管理缓存<flush />标签

 

 

<oscache:flush scope="application" />

 

    清除 application 范围内的所有缓存

 

 

<oscache:flush scope="session" key="foobar" />

 

    清除 session 范围内的 key 为 foobar 的缓存。

 

 

<oscache:flush scope="application" group="currencyData" />

 

    清除 application 范围内组名为 currencyData 内的所有缓存。

 

5. OSCache 页面全部缓存

 

    a)  页面缓存过滤器 代码如下:

 

<filter>
    <filter-name>cacheFilter</filter-name>
    <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-c
lass>
    <init-param>
        <param-name>time</param-name>
        <param-value>3600</param-value>
    </init-param>
    <init-param>
        <param-name>scope</param-name>
        <param-value>application</param-value>
    </init-param>
</filter>

   

    b)  配置你需要缓存的 url 地址 代码如下所示:

 

<filter-mapping>
    <filter-name>cacheFilter</filter-name>
    <url-pattern>/index/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>cacheFilter</filter-name>
    <url-pattern>/index_grounp/*</url-pattern>
</filter-mapping>

 

6. OSCache 的配置文件属性介绍(oscache.properties)

 

    a)  cache.memory=true

         指定是否使用内存缓存,默认值为 true,即使用内存缓存。

         如果设置为 false,那 cache 只能缓存到数据库或硬盘中,那 cache 还有什么意义。

 

    b)  cache.capacity

         指定缓存的容量,默认的容量是无限的。我们可以为它设置缓存数量,

         如:cache.capacity=100000

 

    c)  如果我们要使用硬盘缓存,可以这样设置:

cache.memory=false
cache.path=d:\\cache (指定,缓存保存的路径,注意:路径应采用双\符)
cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener

 

    d)  cache.persistence.class

         用于设置持久化类(如此类打开,则必须设置 cache.path 信息)

 

7. 内容补充

 

    a)  缓存的key将以请求的URI+ 查询字串组成,如果你访问

         /oscache/index.jsp?name=ttt 和/oscache/index.jsp?name=ppp 将得到两份缓存。

         缓存是在初次访问页面时进行的,后续的请求将会返回缓存中的内容。

         缓存中存放的内容为页面返回给用户的 html 源代码。

 

    b)  CashFilter 是通过过滤器来缓存一个完整的 JSP 页面或者我们生成的二进 制文件,

         包括生成的图片,EXCEL,WORLD,PDF 等。

 

    c)  Cron 表达式基本语法

 

         通过 Cron 表达式我们可以很灵活的设置缓存的失效时间,Cron 表达式包括5个字段,

         分别为 Minute,Hour, DOM(Day Of Month), Month,DOW(Day Of Week)。

         他们顺序地对应了5个位置。当某个位置上的值为*时,表示该位置上的任意时间。

         另外还提供了指定时间的操作符号”-”,”,”,”/”,他们 分别表示一段时间范围,

         具体的时间,以及递增的时间段。下面是几个例子说明一下 Cron 表达式的基本应用,

         有兴趣的也可以查看下OScache 的 doc 文 档。

 

         i.   “10/20 * * * *”:

              因是第一个位置,并且是一个递增的表达式,所以表达式指定的是每个小时的第 10分钟,

              第 30 分钟,第 50 分钟缓存内容失效。

 

         ii.  “* 8-18/4 * * *” :

              指定每天早上 8 点到晚上6 点之间,每4 个小时缓存内容失效。 等同于”* 8,12,16* * *”

 

         iii. “* * * * 1-5″:

              表示每个星期一到星期五内容失效。

 

    d)  cache.cluster 配置属性

         为集群设置信息 如:

         cache.cluster.multicast.ip 为广播 IP 地址

         cache.cluster.properties 为集群属性

 

  • 大小: 18 KB
3
1
分享到:
评论
2 楼 iqeq00 2014-03-17  
Dead_knight 写道
似乎还没讲到集群的部署吧。
记得oscache支持jms、jgroups两种方式同步缓存数据。cache.cluster.multicast.ip这个配置应该是针对jgroups方式的。


暂时没研究集群...
1 楼 Dead_knight 2014-03-10  
似乎还没讲到集群的部署吧。
记得oscache支持jms、jgroups两种方式同步缓存数据。cache.cluster.multicast.ip这个配置应该是针对jgroups方式的。

相关推荐

    oscache缓存中间件

    OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。

    OSCache缓存技术

    Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。

    OSCache配置说明文档

    OSCache是一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。 OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。...

    oscache文档

    OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。 ...

    Oscache使用手册

    Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。。。。

    oscache的例子

    OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。 OSCache的特点 (1) 缓存任何对象:你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以...

    Oscache-入门教程.doc

    OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。 OSCache是当前运用最广的缓存方案,JBoss,Hibernate,Spring等都对其有支持。 Oscache的使用非常方便,...

    oscache-2.4.1-full.rar

    OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。 2、OSCache的特点 (1) 缓存任何对象:你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都...

    hibernate_5.1包

    hibernate各个包 ...hibernate-oscache: 支持oscache的缓冲解决方案。(OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。 O

    架构设计方案

    3)采用Oscache实现页面缓存,采用Memcached实现数据缓存 4)采用独立的图片服务器集群来实现图片资源的存储及WEB请求 2.1.3数据存储的设计思路 1)数据库拆分,把生产数据库和查询数据库分离,对生产数据库采用RAC实现...

    论文研究-基于分散校区网上限时选课系统的研究与实现.pdf

    介绍的解决方案改进了选课策略、采用了Apache整合Tomcat、连接池、Oscache内存缓存技术和MVC设计模式,完全适应了分散校区限时选课的需要。2004年6月和11月的选课情况表明该方案完全适应了分散校区限时选课的要求,...

    最全面的门户网站架构设计方案.doc

    3) 采用Oscache实现页面缓存,采用Memcached实现数据缓存 4) 采用独立的图片服务器集群来实现图片资源的存储及WEB请求 2.1.3 数据存储的设计思路 1) 数据库拆分,把生产数据库和查询数据库分离,对生产数据库采用RAC...

    iBATIS实战

    1.1 一个结合了所有优秀思想的混合型解决方案 2 1.1.1 探索iBATIS的根源 3 1.1.2 理解iBATIS的优势 7 1.2 iBATIS适合应用在何处 10 1.2.1 业务对象模型 11 1.2.2 表现层 11 1.2.3 业务逻辑层 12 1.2.4 持久层 13 ...

    基于分散校区网上限时选课系统的研究与实现 (2005年)

    介绍的解决方案改进了选课策 略、采用了Apache 整合Tomcat、连接池、Oscache 内存缓存技术和MVC 设计模式,完全适应了分散校区限时选课 的需要。2004 年6 月和11 月的选课情况表明该方案完全适应了分散校区限时选课...

    ibatis 开发指南(pdf)

    但是,在一些特定的环境下,这种一站式的解决方案却未必灵光。 在笔者的系统咨询工作过程中,常常遇到以下情况: 1. 系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几 条Select ...

Global site tag (gtag.js) - Google Analytics