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 为集群属性
相关推荐
总结来说,OsCache是一个强大的缓存解决方案,尤其适用于Java Web应用。通过合理地使用OsCache,我们可以优化数据访问,提高系统的响应速度,同时减轻服务器的压力。在天气预报的示例中,OsCache不仅简化了代码,还...
osCache是一款广泛应用于Java应用程序中的开源缓存解决方案,由OpenSymphony团队开发。它提供了一种高效、可扩展的方式来管理应用程序中的数据缓存,从而提高系统的性能和响应速度。osCache的核心功能包括缓存对象、...
总结,osCache是一个功能丰富的缓存解决方案,特别适合于Java应用的性能优化。通过合理的配置和使用,可以显著提升系统的响应速度,减轻数据库压力,但同时也要根据项目需求选择最适合的缓存策略和工具。
OSCache是开源的Java缓存解决方案,主要用于提高应用程序性能,减少对数据库的访问频率,从而降低系统的整体负载。本篇文章将深入探讨OSCache的核心概念、配置、使用实例以及其在实际开发中的应用。 首先,OSCache...
OSCache提供了一套完整的解决方案,包括缓存的创建、管理和更新机制。 在OSCache中,缓存是通过一个Key-Value对的形式存在的,Key通常是页面的URL或者一些标识页面内容的唯一键,Value则是页面的内容。当用户请求一...
osCache是Java平台上的一个高效、易用的缓存解决方案,它由Tuckey组织开发,广泛应用于各种Web应用中,以提高数据读取速度,减轻数据库压力。osCache的核心功能是提供了一个内存中的对象缓存系统,通过将常用数据暂...
osCache是Java平台上的一个高效的缓存解决方案,主要用于在应用程序中缓存数据,以提高性能和减少数据库的负载。这个工具特别适用于那些需要频繁访问但更新不频繁的数据,例如经常查询但很少更改的数据库记录。...
OSCache是由OpenSymphony开发的一个高性能、轻量级的缓存解决方案。它支持本地缓存和分布式缓存,可集成到多种应用服务器中,如Tomcat、Jetty等。OSCache的核心特性包括缓存对象的自动过期、内存管理策略、缓存同步...
OSCache 是一款开源的缓存解决方案,主要用于Java应用程序,它能显著提高应用性能,通过缓存数据、对象和查询结果来减少对数据库的访问。这个关键的zip包包含了一些核心的OSCache组件和相关的文档,下面我们将深入...
OSCache 是一款开源的缓存解决方案,主要用于Java应用程序,它为开发者提供了高效的缓存机制,以提高应用性能和响应速度。这篇博客文章“OSCache 缓存对象的总结”主要探讨了OSCache在实际开发中的应用及其核心特性...
为了提高性能,Hibernate 提供了缓存机制,其中 OSCache 是一种广泛使用的二级缓存解决方案。OSCache 是一个开放源码的高性能缓存系统,适用于多种应用环境,包括 Web 应用、EJB 和独立应用。 **1. 安装与配置 ...
OSCache 是一个广泛使用的开源缓存解决方案,尤其在Java应用中,它被JBoss, Hibernate, Spring等知名框架所支持。其主要特点是配置简单,适用于页面级别的缓存管理。以下是对OSCache配置和使用过程的详细说明: 1. ...
OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。
Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。
oscache是一款开源的Java缓存解决方案,其核心功能在于能够缓存Web应用中的动态内容,从而显著提升页面加载速度和服务器资源利用率。它通过在服务器端存储已生成的动态数据,避免了频繁的数据查询和页面渲染,有效...
MySQL 缓存解决方案是提高数据库性能的一种重要手段,合理使用缓存技术可以提高数据库的性能,减少数据库的压力。同时,解决高并发问题也是非常重要的,使用合适的解决方法可以确保系统的稳定性。
- **Java缓存框架**:在Java环境中,缓存框架如osCache提供了一套完整的解决方案,帮助开发者轻松集成和管理缓存。 2. **osCache的核心功能** - **对象缓存**:osCache允许开发者将Java对象直接放入缓存,便于...