`
iamxi
  • 浏览: 188979 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【转】用Java缓存机制创建更快的Web应用----简介和配置

    博客分类:
  • Java
 
阅读更多

   Web开发人员通过Java的缓存功能可以方便快捷的改善应用程序的性能。对于java应用程序来说,一个强大的分布式Java缓存系统(JCS),是用简单的API就可以进行高度配置的工具。这篇文章概要的介绍了JCS,并且展示了怎样用它为Web应用程序提速。

 

  很多的桌面应用程序正在被重写成Web应用程序,理想情况下,被重写后的应用程序应该和桌面版本的应用程序一样快捷并且具有可伸缩性。几乎所有的Web应用都可以通过JCS在速度方面获得大幅提高。经常性的缓存那些很少改变的的数据是减少用户等待时间的非常好的方法,用简单的API处理缓存数据的功能能够帮助我们实现这个目标。开源的JCSApache Jakarta 工程)就是这样的一个工具,这篇文章解释怎样配置和使用JCS来为Web应用程序缓存数据。

 

JCS概要

 

JCS是一个用Java语言编写的可以用于创建桌面和Web应用程序的缓存系统,它为一下处理提供了方便的机制

・在缓存中保存数据;

・从缓存中取得数据;

・从缓存中删除数据等。

  使用JCS,可以把被缓存数据保存到指定的不同的数据存储区域。JCS定义了四种核心存储区域的类型:memorydisklateralremote。我们可以一起使用这些核心存储区域来获得更大的缓存数据的灵活性。如可以指定首先被使用的存储区域,在缓存失败的时候使用另外一个存储区域。

 

Memory

    Memory区域是一个使用LRULeast Recently Used)运算规则的纯内存缓存区域,在内存缓存区被填满的时候,LRU首先删除最近最少被使用的缓存数据。这个数据区有比较好执行效率,因此大多数的用户把它指定为默认首先被使用的缓存区。

 

Disk 

   磁盘区是Web服务器的文件磁盘上的一个缓存数据的区域。要改善性能,可以在内存中保存缓存数据的键值(keys)而在文件磁盘上缓存实际的数据。在典型的首先使用内存区的JCS的配置中,任何不能在内存中持有的数据,就要被写到磁盘区中。

 

Lateral 

     Lateral缓存区提供一种把缓存数据分配个横向关联的多个服务器的方法,缓存服务器必须打开一个用于监听的端口,并且建立一个socket链接。因为这个存储区不能保证缓存间数据的一致性,所以这成为我们要面对的潜在问题。但是如果要设计使用这个存储区,那么这个问题是不太可能发生的。

 

Remote 

    Remote区使用RMIRemote Method Invocation)提供一个缓存区。这个存储区使用处理缓存数据的远程服务器。远程缓存服务器能够被多个JCS客户端应用程序用于保存缓存数据。被定义的监听器用于搜集来自客户端和服务器的的请求。这个缓存区有助于缓解对系列化和多链接点的开销。

 

JCS配置

   配置JCS的过程就像创建和编写cache.ccf文件一样简单。Cache.ccf文件定义了要使用的缓存区以及这些缓存区的属性或选项,把这个文件结合到应用程序上需要一个方便快捷的刻度缓存的方法。下面是为了显示主要的配置点制作的一个尽可能简单的例子。你可以指定很多选项和配置来适应你所需要的正确的配置。

最基本的cache.cff文件-----一个纯内存缓存配置

jcs.default=jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

jcs.default.cacheattributes.MaxObjects=1000

jcs.default.cacheattributes.MemoryCacheName=

org.apache.jcs.engine.memory.lru.LRUMemoryCache

 

   在上面的配置中,最后一行指定了LRUMemoryCache作为内存缓存,并且在内存中保持的对象数被设定为1000

 

   大多数的应用程序的缓存系统需要比上面配置更广泛的配置,在下面的配置中,使用了内存区,并且在定义自己的存储区时,使用磁盘区。

 

jcs.default=DISK_REGION

jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

jcs.default.cacheattributes.MaxObjects=1000

jcs.default.cacheattributes.MemoryCacheName=

  org.apache.jcs.engine.memory.lru.LRUMemoryCache

 

jcs.region.OUR_REGION=DISK_REGION

jcs.region.OUR_REGION.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

jcs.region.OUR_REGION.cacheattributes.MaxObjects=1000

jcs.region.OUR_REGION.cacheattributes.MemoryCacheName=

  org.apache.jcs.engine.memory.lru.LRUMemoryCache

jcs.region.OUR_REGION.cacheattributes.UseMemoryShrinker=true

jcs.region.OUR_REGION.cacheattributes.MaxMemoryIdleTimeSeconds=3600

jcs.region.OUR_REGION.cacheattributes.ShrinkerIntervalSeconds=60

jcs.region.OUR_REGION.cacheattributes.MaxSpoolPerRun=500

jcs.region.OUR_REGION.elementattributes=org.apache.jcs.engine.ElementAttributes

jcs.region.OUR_REGION.elementattributes.IsEternal=false

 

jcs.auxiliary.DISK_REGION=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory

jcs.auxiliary.DISK_REGION.attributes=

  org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes

jcs.auxiliary.DISK_REGION.attributes.DiskPath=c:/jcs/disk_region

jcs.auxiliary.DISK_REGION.attributes.maxKeySize=100000

 

  在上面的配置中的第一行把DISK_REGION设定为默认的存储区。DISK_REGIONIndexedDiskCacheFactory类型,并且指定缓存文件要存放在磁盘上的c:/jcs/disk_region目录中。上面配置中的第二组定义了自己存储区,并且为它添加了一些选项,这种同时指定内存区和磁盘区的配置是常用的一种类型。上面配置中第三组中定义一个备用区。

 

    JCS有连个依赖:concurrentcommons-logging(在JCS1.2.7.0以前的版面中,有另外连个依赖:commos-collectionscommons-lang
分享到:
评论

相关推荐

    java开源包10

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包1

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    JAVA上百实例源码以及开源项目

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    AspMvc框架 Web快速应用开发

    借鉴了国内外很多优秀的(Java Ssh/Net NetMvc3.5 ThinkPhp)框架和模式,使用面向对象的开发结构和MVC模式,RoR的ORM映射,封装了CURD和丰富的工具集等,在缓存机制、认证机制和扩展性方面均有独特的表现。 使用Asp...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java开源包11

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包6

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包8

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包9

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包4

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    java开源包101

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包5

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包3

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    nutz-1.b.52.zip

    如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 就够了 当然你要使用连接池,数据库驱动等功能,还需要自行添置 jar 包。 -------------Nutz 为谁而设计? 如果你觉得 Hibernate 控制比较繁琐,...

    java开源包2

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包7

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    Java资源包01

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java微信公众号MVC开发框架

    @Weixin需要配置value值,这个实际就是微信服务器配置里面URL最后的部分,当然不包含域名和web应用的上下文,切记,不能包含web应用上下文,其他4个部分配置内容也是公众号配置内容,我们只需要登录到公众号看下填...

Global site tag (gtag.js) - Google Analytics