OSCache是一种开放性的JSP定制标记应用,由OpenSymphony设计,提供了在现有JSP页面之内实现快速内存缓冲的功能。

OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。

OSCache是把缓存存放成Map的形式,默认情况下缓存的key由请求的URL和查询字符串组成。

SCache的获取与使用
获取OSCache相关文件

从http://www.opensymphony.com/oscache/ 获取OSCache合适版本,这里我们下载了oscache-2.4-full.zip

在项目中配置OSCache

解压oscache-2.4-full.zip,把其中的oscache-2.4.jar 和解压根目录的lib文件夹下的commons-logging.jar引入到项目中。

把解压根目录etc文件夹下的oscache.properties文件复制到项目的src目录下。

使用OSCache的页面局部缓存
在需要缓存的页面中引入
<%@ taglib uri="/WEB-INF/lib/oscache-2.4.jar" prefix="cache" %>
在需要缓存的局部地方使用<cache:cache>标签,从param中获取需要的参数信息
<cache:cache>
user=${param.user }
</cache:cache>
设置缓存保存在session中:
<cache:cache scope="session">
user=${param.user }
</cache:cache>
默认情况下,缓存的key由请求的URL和查询字符串组成,如果需要设置缓存的key,可以像如下所示进行设置:
<cache:cache key="user">
user=${param.user }
</cache:cache>

这样,缓存的key为user,这时不管给URL中的user变量赋任何值,都只会得到一份缓存(即以user作为key的value值)。

设置局部缓存的缓存时间,以秒为单位:
<cache:cache key="user" time="23">
user=${param.user }
</cache:cache>

这样就设置了局部缓存时间为23秒

缓存的刷新:
设置缓存刷新参数:
<cache:cache key="user" time="23" refresh="${param.refresh }">
user=${param.user }
</cache:cache>

这样,URL传递过来的参数为true时将自动清除缓存。

清除application范围内所有缓存:
<cache:flush scope="application" />
清除session中指定key的所有缓存:
<cache:flush scope="session" key="user" />
清除session内指定组名的所有缓存:
<cache:flush scope="session" group="usergroup" />
使用OSCache的页面全局缓存:

在web.xml中加入OSCache的相关Filter,并作需要的设置:

<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>7200</param-value>
</init-param>
<init-param>
<param-name>scope</param-name>
<param-value>application</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>/cache/*</url-pattern>
</filter-mapping>
oscache.properties中的常用配置:
#缓存到硬盘上
cache.memory=false
#缓存到硬盘上时需要设置,设置持久化类DiskPersistenceListener,持久化到硬盘上 cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener
#缓存到硬盘上时需要设置,缓存到硬盘上的路径
cache.path=D:\\myapp\\cache
#设置缓存数量
cache.capacity=1000
#设置缓存在内存溢出时缓存到硬盘上
cache.persistence.overflow.only=true

OSCache缓存框架介绍的更多相关文章

  1. MyBatis高级篇之整合ehcache缓存框架

    MyBatis高级篇之整合ehcache缓存框架  2017-09-01  0 Comments  1,671 Views  0 Times 一.前言 MyBatis为我们提供了Cache接口,也提供 ...

  2. .NET缓存框架CacheManager在混合式开发框架中的应用(1)-CacheManager的介绍和使用

    在我们开发的很多分布式项目里面(如基于WCF服务.Web API服务方式),由于数据提供涉及到数据库的相关操作,如果客户端的并发数量超过一定的数量,那么数据库的请求处理则以爆发式增长,如果数据库服务器 ...

  3. .NET缓存框架CacheManager---1、CacheManager的介绍

    在我们开发的很多分布式项目里面(如基于WCF服务.Web API服务方式),由于数据提供涉及到数据库的相关操作,如果客户端的并发数量超过一定的数量,那么数据库的请求处理则以爆发式增长,如果数据库服务器 ...

  4. NET缓存框架CacheManager在混合式开发框架中的应用(1)-CacheManager的介绍和使用

    在我们开发的很多分布式项目里面(如基于WCF服务.Web API服务方式),由于数据提供涉及到数据库的相关操作,如果客户端的并发数量超过一定的数量,那么数据库的请求处理则以爆发式增长,如果数据库服务器 ...

  5. oscache缓存

    oscache 使用总结 Posted on 2009-05-22 22:45 青果 阅读(1270) 评论(2)  编辑  收藏 所属分类: 技术点滴  前阵子对公司网站进行了性能优化,其中,有一项 ...

  6. .Net环境下的缓存技术介绍 (转)

    .Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 ...

  7. [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍

    [连载]<C#通讯(串口和网络)框架的设计与实现>- 0.前言 目       录 第一章           通讯框架介绍... 2 1.1           通讯的本质... 2 1 ...

  8. .Net环境下的缓存技术介绍

    .Net环境下的缓存技术介绍 摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 1.1 ...

  9. SpringMVC集成缓存框架Ehcache

    在互联网应用中,应用并发比传统企业及应用会高出很多.解决并发的根本在于系统的响应时间与单位时间的吞吐量.思路可分为:一减少系统的不必要开支(如缓存),二是提高系统单位时间内的运算效率(如集群). 在硬 ...

随机推荐

  1. IOS-时间与字符串互相转换

    有时会遇到这种问题,须要把时间和时间戳互相转换 比方把"这种格式 或者是把""转换成"2014-07-16 15:54:36" 首先来第一个: 当前时 ...

  2. 用事件与CSS改变按钮不同状态下的颜色

    目标效果: 表单的群发按钮,在鼠标悬停时为深蓝色,鼠标离开时为淡蓝色. HTML代码: <button id="submitBtn"  class="btn&quo ...

  3. alimama open source mdrill启动后访问蓝鲸任务时出错:Caused by:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss

    启动后,访问:http://IP:1107/mdrill.jsp  蓝鲸任务

  4. Instruments性能检测

    关于Instruments有网友如是说的:"一句话: 内存开销.运行速度.内存泄露 and so on". 如此简单的回答肯定打发不了咱们各位看官和面试官,当然上述表达和下边的网友 ...

  5. 浅谈C中的指针和数组(二)

    原文转载地址:http://see.xidian.edu.cn/cpp/html/475.html 在原文的基础上增加自己的想法作为修改 很多初学者弄不清指针和数组到底有什么样的关系.我现在就告诉你: ...

  6. jquery结合Highcharts插件实现动态数据仪表盘图形化显示效果

    仪表盘显示效果如图: 方法一效果图: 方法二效果图(插件版本4.0.1): ​ js代码如下: $(function(){ //方法一: var chart = new Highcharts.Char ...

  7. 【java】for循环输出数字金字塔

    输出下列数字金字塔.    1  121 123211234321 public class deng { public static void main(String args[]) { int n ...

  8. rational rose 2003安装及破解

    rational rose作为面向对象的统一建模语言的可视化建模工具,包括了统一建模语言(UML),OOSE,以及OMT,可用于可视化建模和公司级水平软件应用的组件构造:此次小编将讲解如何安装及破解r ...

  9. 有哪些适合学生参与的 C++,网络编程方面的开源项目?

    有哪些适合学生参与的 C++,网络编程方面的开源项目?   Tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通 ...

  10. 分析java中clone()方法 (转载+修改)

    Java中的clone() 方法 java所有的类都是从java.lang.Object类继承而来的,而Object类提供下面的方法对对象进行复制. protected native Object c ...