`
ssxxjjii
  • 浏览: 948784 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OSCache Servlet缓存应用

阅读更多

OSCache是当前运用最广的缓存方案,JBoss,Hibernate,Spring等都对其有支持,
下面简单介绍一下OSCache的配置和使用过程。

1.安装过程
http://www.opensymphony.com/oscache/download.action下载合适的OSCache版本,
我下载的是oscache-2.4.2-full版本。
解压缩下载的文件到指定目录

从解压缩目录取得oscache.jar 文件放到 /WEB-INF/lib 或相应类库目录 目录中,
jar文件名可能含有版本号和该版本的发布日期信息等,如oscache-2.4.1.jar
如果你的jdk版本为1.3.x,建议在lib中加入Apache Common Lib 的commons-collections.jar包。
如jdk是1.4以上则不必

从etc目录取得oscache.properties 文件,放入src根目录或发布环境的/WEB-INF/classes 目录
如你需要建立磁盘缓存,须修改oscache.properties 中的cache.path信息 (去掉前面的#注释)。
Windows类路径类似为c:\\myapp\\cache

unix类路径类似为/opt/myapp/cache

拷贝etc目录META-INF下的OSCache标签库文件oscache.tld到/WEB-INF/classes目录。

现在你的应用目录类似如下:
$WEB_APPLICATION\WEB-INF\lib\oscache.jar
$WEB_APPLICATION\WEB-INF\classes\oscache.properties
$WEB_APPLICATION\WEB-INF\classes\oscache.tld


将下列代码加入web.xml文件中

Xml代码
  1. <taglib>    
  2. <taglib-uri>oscache</taglib-uri>    
  3. <taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>    
  4. </taglib>   
<taglib> 
<taglib-uri>oscache</taglib-uri> 
<taglib-location>/WEB-INF/classes/oscache.tld</taglib-location> 
</taglib> 

 为了便于调试日志输出,须加入commons-logging.jar和log4j-1.2.8.jar到当前类库路径中

在src目录加入下面两个日志输出配置文件:

Xml代码
log4j.properties 文件内容为:    
  1. log4j.rootLogger=DEBUG,stdout,file    
  2.   
  3. log4j.appender.stdout=org.apache.log4j.ConsoleAppender    
  4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout    
  5. log4j.appender.stdout.layout.ConversionPattern=[start]%d{yyyy/MM/dd/ HH:mm:ss}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n    
  6.   
  7.   
  8.   
  9. log4j.appender.file=org.apache.log4j.RollingFileAppender    
  10. log4j.appender.file.File=oscache.log    
  11. log4j.appender.file.MaxFileSize=100KB    
  12. log4j.appender.file.MaxBackupIndex=5    
  13. log4j.appender.file.layout=org.apache.log4j.PatternLayout    
  14. log4j.appender.file.layout.ConversionPattern=[start]%d{yyyy/MM/dd/ HH:mm:ss}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n    
  15.   
  16.   
  17. log4j.logger.org.apache.commons=ERROR    
  18. log4j.logger.com.opensymphony.oscache.base=INFO   
log4j.properties 文件内容为: 
log4j.rootLogger=DEBUG,stdout,file 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[start]%d{yyyy/MM/dd/ HH:mm:ss}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n 



log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=oscache.log 
log4j.appender.file.MaxFileSize=100KB 
log4j.appender.file.MaxBackupIndex=5 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=[start]%d{yyyy/MM/dd/ HH:mm:ss}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n 


log4j.logger.org.apache.commons=ERROR 
log4j.logger.com.opensymphony.oscache.base=INFO 

 

commons-logging.properties 文件内容为

Java代码
  1. org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog   
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog 

 
2.oscache.properties 文件配置向导

cache.memory
值为true 或 false ,默认为在内存中作缓存,
如设置为false,那cache只能缓存到数据库或硬盘中,那cache还有什么意义:)

cache.capacity
缓存元素个数

cache.persistence.class
持久化缓存类,如此类打开,则必须设置cache.path信息

cache.cluster 相关
为集群设置信息。

cache.cluster.multicast.ip为广播IP地址
cache.cluster.properties为集群属性


3.OSCache的基本用法 

default.do 内容如下

Html代码
  1. <%@ page import="java.util.*" %>    
  2. <%@ taglib uri="oscache" prefix="cache" %>    
  3.   
  4. <html>    
  5. <body>    
  6.   
  7. 没有缓存的日期: <%= new Date() %><p>    
  8.   
  9.   
  10. <!--自动刷新-->    
  11. <cache:cache time="30">    
  12. 每30秒刷新缓存一次的日期: <%= new Date() %>    
  13. </cache:cache>    
  14.   
  15.   
  16. <!--手动刷新-->    
  17. <cache:cache key="testcache">    
  18. 手动刷新缓存的日期: <%= new Date() %> <p>    
  19. </cache:cache>    
  20.   
  21.   
  22. <a href="rwg109/filter/test.do/">手动刷新</a>    
  23.   
  24. </body>    
  25. </html>   
<%@ page import="java.util.*" %> 
<%@ taglib uri="oscache" prefix="cache" %> 

<html> 
<body> 

没有缓存的日期: <%= new Date() %><p> 


<!--自动刷新--> 
<cache:cache time="30"> 
每30秒刷新缓存一次的日期: <%= new Date() %> 
</cache:cache> 


<!--手动刷新--> 
<cache:cache key="testcache"> 
手动刷新缓存的日期: <%= new Date() %> <p> 
</cache:cache> 


<a href="rwg109/filter/test.do/">手动刷新</a> 

</body> 
</html> 

 

====================================


test.do 执行手动刷新页面如下

Html代码
  1. <%@ taglib uri="oscache" prefix="cache" %>    
  2.   
  3. <html>    
  4. <body>    
  5.   
  6. 缓存已刷新...<p>    
  7.   
  8. <cache:flush key="testcache" scope="application"/>    
  9.   
  10. <a href="rwg109/filter/default.do">返回</a>    
  11.   
  12. </body>    
  13. </html>   
<%@ taglib uri="oscache" prefix="cache" %> 

<html> 
<body> 

缓存已刷新...<p> 

<cache:flush key="testcache" scope="application"/> 

<a href="rwg109/filter/default.do">返回</a> 

</body> 
</html> 

 
你也可以通过下面语句定义Cache的有效范围,如不定义scope,scope默认为Applcation

Html代码
  1. <cache:cache time="30" scope="session">    
  2. ...    
  3. </cache:cache>   
<cache:cache time="30" scope="session"> 
... 
</cache:cache> 

 
4. 缓存过滤器 CacheFilter

你可以在web.xml中定义缓存过滤器,定义特定资源的缓存。

Xml代码
  1. <filter>    
  2.     <filter-name>CacheFilter</filter-name>    
  3.     <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>    
  4.     <init-param>    
  5.         <param-name>time</param-name>    
  6.         <param-value>60</param-value>    
  7.     </init-param>    
  8.     <init-param>    
  9.         <param-name>scope</param-name>    
  10.         <param-value>session</param-value>    
  11.     </init-param>    
  12. </filter>    
  13. <filter-mapping>    
  14.     <filter-name>CacheFilter</filter-name>    
  15.     <url-pattern>/filter/*</url-pattern>    
  16. </filter-mapping>   
<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>60</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> 
 <url-pattern>/filter/*</url-pattern> 
</filter-mapping> 

 上面定义将缓存所有以/filter/开头的页面,缓存刷新时间为60秒,缓存作用域为Session

注意,CacheFilter只捕获Http头为200的页面请求,即只对无错误请求作缓存,
而不对其他请求(如500,404,400)作缓存处理

分享到:
评论

相关推荐

    OsCache缓存框架使用示例

    OsCache是Java应用程序中常用的缓存框架,它能够有效地提高应用程序的性能,通过将经常访问的数据存储在内存中,减少对数据库或其他数据源的访问,从而降低系统负载。本示例将通过一个天气预报Web服务的场景,详细...

    oscache缓存技术入门实例

    2. 初始化缓存:在应用程序启动时初始化osCache,这通常在Servlet容器的初始化回调方法中完成。 ```java OsCacheManager cacheManager = OsCacheManagerFactory.getInstance(); cacheManager.init...

    oscache-JSP缓存

    - 编写Java代码:在Servlet或Controller中,使用osCache API进行缓存操作。 **5. 示例应用** 以下是一个简单的osCache在JSP页面中的应用示例: ```jsp &lt;%@ taglib uri="http://www.opensymphony.com/oscache" ...

    oscache缓存使用总结.doc

    OSCache的使用包括在JSP或Servlet中使用OSCache标签,例如`&lt;oscache:cache&gt;`,或者通过API进行编程式缓存操作。可以通过设置key和expiration时间来缓存特定内容,当数据变化时,可以自动更新缓存。 在实际应用中,...

    OSCache学习例子 实例

    3. **初始化OSCache**:在应用启动时初始化OSCache实例,通常在Servlet容器的初始化回调方法中进行。 4. **使用OSCache**:将需要缓存的对象放入OSCache,例如: ```java Object object = ...; Cache cache = ...

    oscache的一些使用

    - 在Web应用中,osCache可以通过Servlet Filter或监听器来初始化和清理缓存。 - 对于Struts、Spring等框架,有相应的插件支持osCache的集成。 ### 7. osCache的优化实践 - **缓存命中率**:监控和调整缓存策略以...

    oscache的demo

    osCache支持页面级别的缓存,可以将整个JSP页面或者Servlet的输出结果存储起来。当用户再次请求相同的页面时,osCache会直接返回缓存的页面内容,而不是重新执行页面渲染过程。这在处理静态内容或频繁请求的页面时...

    oscache文档

    作为一种广泛应用且高性能的J2EE缓存框架,OSCache能够应用于任何Java应用程序中作为通用缓存解决方案。 **主要特点:** 1. **缓存对象多样性**:不受限制地缓存部分JSP页面或HTTP请求,任何Java对象均可缓存。 2....

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

    2. **缓存过滤器**:在Web应用程序中,Filter是Servlet规范的一部分,允许开发者在请求到达目标Servlet或JSP之前拦截并处理它。OSCache Filter就是在HTTP请求处理链中加入的一环,用于缓存特定URL的响应内容。 **...

    缓存技术详解

    3. **OSCache Servlet缓存示例**:演示如何使用OSCache框架进行Servlet级别的缓存。 #### 九、页面局部缓存 页面局部缓存用于缓存页面中的一部分内容: 1. **OSCache的页面局部缓存**:仅缓存页面中的某一部分,...

    应用OSCache提升J2EE系统运行性能

    **OSCache**是一个开放源码项目,专门针对J2EE框架下的Web应用层缓存设计。它不仅能实现常规的缓存功能,还能增强系统的稳定性。本文将详细介绍如何利用OSCache来优化J2EE系统的性能,并探讨其在处理特定动态内容...

    在J2EE系统中应用OSCache知识.pdf

    OSCache是一个由OpenSymphony组织提供的开源缓存解决方案,专为J2EE架构的Web应用程序设计,能够显著提升系统的稳定性和并发处理能力。 ### 1. 缓存技术面临的挑战 #### 1.1 处理特殊动态内容 在信息系统中,经常...

    Oscache_入门

    - **通用性**:除了Web应用外,Oscache还可以应用于任何Java应用程序,作为一种通用的缓存解决方案。 #### 二、Oscache的优势 Oscache具有多项优势,使其成为众多开发者首选的缓存工具。 ##### (一)Oscache的...

    SpringMVC +Mybatis+Spring+oscache配置文件

    oscache是一个缓存框架,可以提高应用程序的性能。其配置文件通常为`oscache.xml`: 1. **Cache**:定义缓存区域,设置缓存策略,如大小、过期时间等。 2. **Listeners**:缓存事件监听器,例如在对象添加到缓存时...

    oscache代码最新

    oscache,java技术,数据缓存 OSCache can be used as a standalone caching solution for any Java application. OSCache's tag library and the caching filter for dynamic binary content, like PDFs or images, ...

    springMVC配置

    OSCache是开源的Java缓存解决方案,它可以用于存储和快速检索数据,提高应用程序的性能。在Spring MVC中,可以配置缓存策略,例如缓存时间、缓存大小等。 2. `log4j.properties`:这是Log4j的日志配置文件,Log4j是...

    ssm整合文档。看着文档自己操作,很简单

    为了提高系统的性能,可以使用OSCache对频繁访问的数据进行缓存。具体配置如下: - **配置OSCache过滤器** ```xml &lt;filter-name&gt;oscache &lt;filter-class&gt;...

Global site tag (gtag.js) - Google Analytics