浅浅的对EhCache缓存的传统封装
admin 发布于:2015-01-08 11:57:00
阅读:loading
也不记得是什么时候接写的了,大概是2011到2012年间?是老黄历了,记忆犹新的是从什么时候开始正式接触这个缓存,这个要数2010年的下半年的一个Portal类型的项目,其中有一块内容管理是由我来实现,还记得当时在功能实现完之后,项目经理给我说可以加上缓存,好吧,当时对缓存理论了解的很泛,实践那更是没使用过,于是我在了解了一些缓存知识后,开始动手了,OK,减短截说,那就给加上缓存了,说说当时是怎么做的吧,首先了解到了一个EHCache的缓存组件,使用它的页面缓存,应用起来貌似就很简单了,稍微表一下当时的实现方案。
1、系统首页采用后台配置的页面缓存,实现是添加一个过滤器,配置好过滤的地址(比如访问的首页地址等),每30分钟缓存过期的更新策略,后来由于各种原因吧,我又给换了,换成了后台对象缓存,实现方案是调用后台BaseDao中的缓存函数,使用的项目架子里面的hibernate的查询缓存。
2、前台首页列表项的明细数据的缓存则是使用$.ajax的cache属性来完成的,也清楚在客户端的这种缓存意义不是很大,拿IE来讲浏览器的设置可以使这种缓存没有任何意义,设置方式如下:
3、再后来项目各种功能的慢慢完善,由项目经理对系统缓存做了一个封装,基于的实现组件是OSCache(另一种缓存方案的实现,如果现在要问我选择哪一个,我会选择EHCache),完了就是各种函数封装,具体代码现在已经无从知晓了,然后使用的时候则是先判断缓存中是否存在某个节点,如果不存在则放进去,如果存在则直接获取,然后就是系统里面大规模的改动,你懂得。我本来也是偏向于这种方式的,直接使用传统方式的封装调用,但是近期又了解了一下与spring的整合后,发现完全可以不用这样,与spring的整合使用,下讲再说。
回到正题对EHCache简单的封装上来说,我采用单例的类来管理CacheManager对象,使一个系统中只存在一个缓存池子,然后它里面的缓存名称有严格的定义,使用枚举对象来声明,防止后期在项目中缓存名称字符串的泛滥,也为了一眼看不清楚系统存在多少缓存对象。下面贴出部分代码,比较简单,呵呵,也就这种水平了,可作为初级了解的入门了。
源码下载
上传了几次内涵图,发现现在在空间里面不好使了,可能是空间相册对于上传的图片进行了二次编辑吧,太扯了,见附件。
点赞