在OSCache2.0以前的版本,内容只能根据它在缓存里呆了长时间来判断是否过期,比如,她是基于内容的年龄的。如果你需要指定一个特殊的日期/时间使内容过期,你就得自己动手写一个自定制的RefreshPolicy类。 OSCache2.0现在给你一种可以根据指定的时间使内容过期的能力,这是一种基于cron表达式的能力。 What is a Cron Expression? 你们中的许多可能已经对于unix中的cron程序非常的熟悉了。对于那些不熟悉的来说,cron是一个允许用户在“用户可设置”的时间自动执行命令或者脚本的后台处理过程。OSCache之所以被关注的一个重要原因就是cron表达式的语法允许用户当命令要被执行的时候来进行指示 - 现在你可以使用相同的语法来使OSCache中的内容统一过期!一个cron表达式是一个简单的文本字符串,指定被用来比较的日期和或时间。 How Does OSCache Match Against an Expression? 从某种意义上说,OSCache使用cron表达式看起来和你起初所期望的是向违背的。当使用一个cron表达式来测试一个entry是否过期时,OSCache找到一个和表达式所定义的想匹配的日期/时间(在当前时间以前找)。这个日期/时间就被当做“过期时间” - 在这个时间以前被装入缓存的entry都被视为过期,并抛出NeedsRefreshException异常。
比如说,假定你指定了一个cron表达式为每小时都匹配一次, ("0 * * * *")。如果现在的时间是10:42,那么所有10:00以前被放入缓存的内容都会被视为过期。
What is the Difference Between the Refresh Period and a Cron Expression? refresh周期和cron表达式的区别是refresh周期指定了一个entry所能存活的最长年龄。同时,一个cron表达式指定了一个特殊的过期时间,并将忽略这个entry的年龄大小。
比如,设想你在10:29am缓存了一个对象。使用refresh周期为30分钟的话,entry将在10:59过期。如果使用一个为 "0,30 * * * *"的cron表达式的话,entry将在10:30过期。 The Cron Expression Syntax 一个cron表达式由以下5个部分组成: 分钟(Minute) - 指定在一小时的第几分钟使内容过期。它应该是有个0到59的数字。
小时(Hour) - 决定在一天中的第几个小时的时候将内容视为过期。它指定使用24小时制,所以它的值应该在0到23之间。
一月中的一天(DOM) - 这里是一个1到31的数字。它指示了在哪一天将内容视为过期。例如:将每个月的第10天做为过期日,那么这个部分应该填写10。
月(month) - 一年中的第几个月将视为内容过期。这里可以用数字(1到12)表示,也可以月份真实名称(如:'January')。月份的名字可以不在乎大小写并且只有开头的三个字母有用,其他的可以忽略。
一周中的一天(DOW) - 指出在一周中的哪一天内容过期,这里可以用数字值(0-6, 0 = Sunday, 1 = Monday, ..., 6 = Saturday),或者你也可以使用每天的具体名称,就象月的名字一样,DOW一样不在乎大小写,并且只有开头的三个字母有用。
如果你不想为一个特定的部分指定值(比如,你想让你的cron表达式中的某一部分可以匹配任何一个允许的值),那就使用*字符来作为该部分的值。
例,定义一个在4月的每天中的11:45pm使内容过期的表达式,可以写成"45 23 * April *"。
OSCache同样允许你随意在每个部分的指定list、range和interval(或者是这三者的集合)。 lists - 在list中的项目用','分割。内容过期的时间将匹配list中每一个指定的值。例如,"0,15,30,45 * * * *" 将每隔15分钟报告过期。 ranges - 这里使用'-'来划分每一个范围。一个range将包含从这个范围起始到结束(包含边界)中的所有值。例如,"* * * Jan-June *" 将在一年中的头六个月的每分钟报告内容过期。 intervals - 一个间隔用'/'来分隔。在'/'左边的值是有一个起始点或者说是一个需要增长的范围,而右边的值指定了间隔或者说是步长。如下例: "10/20 * * * *" 等价于"10,30,50 * * * *",
"10-45/20 * * * *" 将只匹配一小时中的第10分钟和第30分钟, 因为第50分钟已经超过了他所指定的范围(10-45)。
在一个间隔的左手边使用‘*’表示在范围内所有可用的值。 Eg "*/10 * * * *" matches minutes 0,10,20,30,40 and 50. Notes 如果你愿意的话,你可以同时既指定一个cron表达式又指定了一个refresh间隔。如果你想在午夜报告内容过期,同时有不希望内容的寿命超过6小时,这时这种做法是很有帮助的(个人认为:这个功能完全可以仅仅通过一个cron表达式来实现)。 指定超出范围的值,比如在月的部分你写了个13,将会导致一个ParseException被抛出。 如果一个DOM在一个给定的月份中并不存在,将会抛出ParseException异常。例如:我们永远都不会找到和"* * 31 Feb *" 匹配的结果,因为2月从来就没有31号。 不能同时既指定DOM值又指定DOW值,其中一个必须被设置为'*',否则一个ParseException将被抛出。 闰年和local daylight savings time在这里都是有效的。例如,"0 0 29 Feb *" 将与2月29日的凌晨时刻匹配,只是4年才有一次。 用来和cron表达式进行匹配的当前时间通常基于服务器上的本地时间。
|
相关推荐
本文档的主要目的是阐述OSCache的核心功能、配置方法以及实际应用中的操作步骤,帮助开发者理解和有效地利用OSCache提升应用程序性能。 阅读对象: 此文档适合对Java Web开发有一定了解,希望引入缓存机制以优化...
在这个"OSCache学习例子 实例"中,我们将深入探讨如何在J2EE环境中集成并使用OSCache。 首先,理解OSCache的基本概念至关重要。OSCache的核心功能是提供内存中的对象缓存,它支持两种主要的缓存模式:本地缓存和...
osCache的核心功能是提供了一个内存中的对象缓存系统,通过将常用数据暂存到内存中,避免了频繁的数据库查询,从而显著提升应用程序的性能。 在开始配置osCache之前,我们需要了解其基本概念和工作原理。osCache...
6. **集成到JSP页面**:在JSP页面中引入Oscache标签库,使用`<%@taglib uri="oscache" prefix="cache"%>`声明,其中`uri`值应与`web.xml`中配置的`<taglib-uri>`一致。 7. **实现缓存逻辑**:在JSP页面中利用...
OsCache是Java应用程序中常用的缓存框架,它能够有效地提高应用程序的性能,通过将经常访问的数据存储在内存中,减少对数据库或其他数据源的访问,从而降低系统负载。本示例将通过一个天气预报Web服务的场景,详细...
在本文中,我们将深入探讨osCache的基本概念、工作原理以及如何在实际项目中进行配置和使用。 一、osCache基本概念 osCache的核心理念是将数据存储在内存中,以减少对数据库或其他资源的频繁访问,从而提高系统的...
OSCache 是一个高效的、开源的缓存框架,主要用于 Java 应用程序,它提供了一种在内存中存储对象的方式,以提高数据访问速度并减轻数据库的负载。在Java Web开发中,OSCache常被用于实现Session复制和分布式缓存,...
在 `web.xml` 中添加对 Taglib 的支持,然后在 JSP 页面中引入标签库,如 `<%@ taglib uri="/WEB-INF/classes/oscache.tld" prefix="cache"%>`。 3. **整个页面的缓存**:通过实现 `CacheFilter`,可以对整个页面或...
oscache-2.1.jar oscache-2.1.jar
为了在 JSP 页面中使用 OSCache 功能,需要将 `soscache.tld` 文件添加到 CLASSPATH 中,通常放在 `src/webapp/WEB-INF/classes` 或 `etc` 目录下。然后在 `web.xml` 文件中添加标签库定义,如下所示: ```xml ...
- **添加依赖**: 在Java项目中,需要将osCache的JAR文件添加到类路径中,或者在Maven/Gradle项目中添加对应的依赖配置。 - **配置文件**: `oscache.xml`是osCache的主要配置文件,包含缓存区域定义、缓存策略等设置...
- 配置osCache插件:首先需要将osCache的jar包添加到项目类路径中,然后在struts.xml配置文件中引入osCache拦截器,并配置相应的拦截规则。 2. **iBatis与osCache**: - iBatis是一个轻量级的持久层框架,它允许...
osCache是Java开发中常用的缓存框架之一,它主要用于提高应用程序的性能和效率,通过将数据存储在内存中,减少对数据库的访问。osCache不仅可以用于Web应用,也可以用于任何Java应用程序,支持集群环境,提供了丰富...
此外,`oscache`还提供了诸如`cron`、`groups`、`language`、`refreshpolicyclass`、`refreshpolicyparam`等属性,进一步增强了缓存管理的灵活性和精细化控制能力。 ### 结论 通过合理配置和使用oscache,开发人员...
OSCache基于内存的缓存系统能够将经常访问的数据存储在内存中,避免了每次请求时都需要从数据库中获取数据的开销。通过缓存热点数据,它可以显著提升Web应用的响应速度,降低延迟,提高用户体验。 2. **JSP定制...
- **缓存对象**:osCache允许开发者将任何Java对象存储到缓存中,以便后续请求可以直接从内存中获取,而无需再次进行昂贵的数据库查询或其他计算操作。 - **缓存区域**:osCache支持多个缓存区域,每个区域可以有...
OSCache是Apache软件基金会的开源项目,它是一个高性能、易用的Java缓存框架,广泛应用于各种企业级应用系统中,特别是用于实现页面级别的缓存。这篇博客将深入探讨如何利用OSCache来实现页面缓存,并结合实际案例...
对于osCache来说,这个文件可能会解释如何配置和集成osCache到项目中,以及如何解决常见问题。 3. **etc**:这个目录可能包含了配置文件,如`oscache.properties`,用于设置缓存的行为,例如缓存大小、过期策略、...
本篇文章将深入探讨OSCache的核心概念、配置、使用实例以及其在实际开发中的应用。 首先,OSCache是基于内存的缓存系统,它允许开发者将常用的数据存储在内存中,以便快速访问。这种技术对于处理高并发请求和大数据...