文档章节

OSCache 基本使用

learn_more
 learn_more
发布于 2015/03/23 16:24
字数 1253
阅读 202
收藏 1

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

1 OSCache 的基本安装

1)首先去开源中国查看一下资源介绍,然后下载对应资源,具体地址:

    http://www.oschina.net/p/oscache

2)下载后(目前版本为2.4),解压得到如下目录:

1)docs 文档目录:相关使用API以及OSCache介绍,对学习非常有用!

2)etc:该目录下存放我们项目所需要的两个配置文件,分别是:oscache.properties 和 oscache.tld ;前者用来配置缓存的属性,后者则是Jsp标签库注册配置。

3)lib:存放相关依赖的jar,最主要的就是commons-logging.jar 和 OSCache的jar文件

4)src:示例项目源文件,这个对于学习来说是非常有用的,因为我的学习方式就是跟着docs文档的提示,然后对照这里的示例一步步学习!

3)新建一个web项目,在项目中引入上面lib中提到的jar包

    commons-logging.jar 和 oscache-2.4.jar文件

4)在src目录下粘贴上面etc的两个文件

    oscache.properties 和 oscache.tld

5)为项目引入标签库,有三种方式,其实也就是jsp标签引入的三种方式,分别如下:

A:只要在JSP页面中添加如下语句:

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

B:只要在JSP页面中添加如下语句(直接引用):
<%@ taglib uri="/WEB-INF/classes/oscache.tld" prefix="cache"%>

C:需要配置web.xml,同时在JSP页面添加(间接引用)

web.xml (如果是2.4以下的可以不需要jsp-config包裹)

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

JSP页面中

<%@ taglib uri="oscache" prefix="cache"%>

6)配置页面缓存(主要是对一些图片、报表进行缓存),web.xml 中配置如下:

  <listener>
        <listener-class>com.opensymphony.oscache.web.CacheContextListener</listener-class>
    </listener>
    <session-config>
        <session-timeout>3600</session-timeout>
    </session-config>
 <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>10</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>*.jsp</url-pattern>
 </filter-mapping>


2 OSCache 的基本使用

1)oscache.properties 配置内容介绍

 cache.memory=true

 cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener

 cache.path=D:\\oscache

 cache.capacity=1000

 cache.unlimited.disk=false

1)是否使用内存缓存,默认为true

2)如果使用磁盘缓存,这个属性必须有值,否则采用内存缓存

3)磁盘缓存的位置,这个属性需要看系统设置路径

4)缓存容量大小

5)磁盘缓存大小是否限定

2)JSP页面缓存,主要就是通过如下标签

  • cache - The main caching tag

  • usecached - A nested tag to force using a cached version.

  • flush - To flush caches programmatically.

  • addgroup - It allows a single group name to be dynamically added to a cached block. This tag must be nested inside <cache:cache/>.

  • addgroups - It allows a comma-delimited list of group names to be dynamically added to a cached block. This tag must be nested inside <cache:cache/>.

具体介绍:
1)cache用来缓存某一个具体的内容,那么保证其属性key的值唯一性,同时指定一个超时时间,告诉系统缓存什么时间段有效!
2)usecached用来作为一种保险方式,当获取当前缓存出错时,可以采用系统以前旧版本的缓存,这个标签必须在cache标签内。
3)flush用来强制清空缓存,缓存有应用范围分为3个,application、session、null;如果为null,则会清除前两者的缓存,否则只清除指定范围内的缓存。
4)addgrop  与 addgroups 必须在cache标签内使用,他们是意义在于统一控制管理,换句话,如果谁(比如 flush)引用了groupID,对其做了限制,那么这个缓存将会受到他的影响。同时,他也受控于自身所属的cache。

3)cache标签的重要属性

cache

1)key :这个缓存的键,需要唯一标识

2)scope:应用范围,application、session、null

3)time:缓存有效时间,默认3600秒

4)duration:缓存有效期时间,这个时间可以采用简单的格式

5)cron:通过cron表达式设置缓存时间,这个可以参考文档

6)refresh:如果为true,则缓存内容得到刷新,也就是从新缓存内容

7)groups:为缓存指定一个分组,便于统一管理


3 页面缓存

页面缓存只要配置在web.xml 中配置对应的URL-pattern格式,就可以顺利进行页面缓存,具体上面第六步安装配置。

4 API使用

// 获取缓存管理对象,这个对象最好做一个单例
ServletCacheAdministrator admin = ServletCacheAdministrator.getInstance(getServletContext());
// 一般对于页面缓存,经常使用某个特定参数的值作为缓存的key
String key = req.getParameter("key");
// 缓存的值
String myValue = "";
//  缓存有效期
int myRefreshPeriod = 1000;
// 是否flush缓存
boolean updated = false;
// 缓存内容操作
try {
      // 从指定应用范围中获取缓存内容
      myValue = (String) admin.getFromCache(PageContext.SESSION_SCOPE,req,key,myRefreshPeriod);
  } catch (NeedsRefreshException nre) {
      try {
          // 如果取值发生错误,那么可以进行手动添加缓存
          myValue = "This is the content retrieved.";
          // 添加缓存
          admin.putInCache(PageContext.SESSION_SCOPE,req,key,myValue);
          updated = true;
      } finally {
          if (!updated) {
              // It is essential that cancelUpdate is called if the
              // cached content could not be rebuilt
              admin.cancelUpdate(PageContext.SESSION_SCOPE,req,key); 
          }
      }
  }


© 著作权归作者所有

上一篇: 3月份面试初体验
下一篇: Log4j 基本使用
learn_more
粉丝 93
博文 240
码字总数 210196
作品 0
深圳
程序员
私信 提问
OSCache的基本使用

首先,在TOMCAT发布一个名为test的应用,然后在http://www.opensymphony.com/oscache/download.html下载最新版本的OSCache。我下载的是oscache-2.1-full.zip。解压此文件把oscache-2.1.jar以...

红薯
2008/10/05
2.4K
0
Spring基于注解的缓存配置--EHCache AND OSCache

本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中提供对许多第三...

小样
2012/02/28
815
0
OSCache中的GZip和JSP空间上的Apache的GZip重复

JSP空间中的Apache开启了GZip模块,而现在我们的项目使用了OSCache做页面缓存,OSCache也有自己的GZip功能,部署到JSP空间之后发现页面显示不正常,有些文件可能被GZip压缩了两次,造成页面显...

WilliamSha
2012/09/05
228
1
ActiveJDBC 的缓存处理

ActiveJDBC 内置对缓存的支持,其直接提供对 OSCache 缓存的支持,使用其他缓存系统需要自行编写 CacheManager 类,可参考 OSCacheManager 类。 要让 ActiveJDBC 启用缓存支持需要以下几步:...

红薯
2011/07/27
1K
4
oscache与memcache的比较

OSCache是进程级缓存,说白了就是利用JVM本身的内存来保存一些对象. Memcache是利用别的机器的缓存,利用网络来沟通. 个人建议是看你的应用了. OScache本身提供了广播和JMS等方式来进行缓存失效...

疯狂的兔子
2015/03/12
269
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis面试题详解:哨兵+复制+事务+集群+持久化等

Redis主要有哪些功能? 1.哨兵(Sentinel)和复制(Replication) Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 Sentinel...

Java阿七
2分钟前
0
0
响应国家号召 1+X 证书 Web 前端开发考试模拟题

官方QQ群:736413913 1+x证书Web前端开发初级理论考试样题2019 http://blog.zh66.club/index.php/archives/149/ 1+x证书Web前端开发初级实操考试样题2019 http://blog.zh66.club/index.php/...

张帅个人博客
6分钟前
2
0
如何检查一个字符串在Objective-C中是否包含另一个字符串?

如何检查字符串( NSString )是否包含另一个较小的字符串? 我希望有这样的东西: NSString *string = @"hello bla bla";NSLog(@"%d",[string containsSubstring:@"hello"]); 但是我能找到......

javail
24分钟前
2
0
.NET Core开发的iNeuOS工业互联网平台,发布 iNeuDA 数据分析展示组件,快捷开发图形报表和数据大屏

目 录 1. 概述... 2 2. 演示信息... 2 3. 简单介绍... 3 4. 产品特点... 4 5. 价值体现... 5 1. 概述 经过一段时间的努力,iNeuDA产品组件已经开发和测试完成,现在正式上线。现在iNeuOS工业...

wxzz
26分钟前
2
0
在每个GROUP BY组中选择第一行?

顾名思义,我想选择以GROUP BY分组的每组行的第一行。 具体来说,如果我有一个如下的purchases表: SELECT * FROM purchases; 我的输出: id | customer | total---+----------+------ 1...

技术盛宴
39分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部