博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OSCache 基本使用
阅读量:5746 次
发布时间:2019-06-18

本文共 3929 字,大约阅读时间需要 13 分钟。

hot3.png

1 OSCache 的基本安装

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

    

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

161709_bQ8j_1989321.png

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="" prefix="cache" %>

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

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

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

  
     
       
        oscache       
       
         /WEB-INF/classes/oscache.tld       
     
  

JSP页面中

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

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

  
        
com.opensymphony.oscache.web.CacheContextListener
    
    
        
3600
    
 
     
CacheFilter
     
com.opensymphony.oscache.web.filter.CacheFilter
     
         
time
         
10
     
     
         
scope
         
session
     
 
  
     
CacheFilter
     
*.jsp
 

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());// 一般对于页面缓存,经常使用某个特定参数的值作为缓存的keyString 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);           }      }  }

转载于:https://my.oschina.net/heweipo/blog/390412

你可能感兴趣的文章
SRE工程师到底是做什么的?
查看>>
解读:Red Hat为什么收购Ansible
查看>>
Ossim下的安全合规管理
查看>>
DelphiWebMVC框架下BPL热部署实现
查看>>
C++与MySQL的冲突
查看>>
siki学习之观察者模式笔记
查看>>
单元测试
查看>>
spring.net 继承
查看>>
ES6:模块简单解释
查看>>
JavaScript indexOf() 方法
查看>>
用Bootstrap写一份简历
查看>>
ZJU PAT 1023
查看>>
WMI远程访问问题解决方法
查看>>
从零开始学习IOS,(UILabel控件)详细使用和特殊效果
查看>>
Android开发历程_15(AppWidget的使用)
查看>>
阿花宝宝 Java 笔记 之 初识java
查看>>
7、设计模式-创建型模式-建造者模式
查看>>
我国古代的勾股定理
查看>>
Linux下的C编程实战
查看>>
[32期] html中部分代码与英语单词关系
查看>>