hibernate EHCache缓存 二



六、在页面中使用EHCache缓存

       简单的来说,如果一个应用中80% 的时间内都在访问20% 的数据,那么,这时候就应该使用缓存了。

       在80/20 原则生效的地方,我们都应该考虑是否可以使用缓存。但即使是这样,缓存也有不同的用法,举个例子,一个网站的首页估计是被访问的次数最多的,我们可以考虑给首页做一个页面缓存。页面访问最频繁的,做缓存。不同的页面的缓存策略有可能有天壤之别。

       毫无疑问,几乎所有的网站的首页都是访问率最高的,而首页上的数据来源又是非常广泛的,大多数来自不同的对象,而且有可能来自不同的db ,所以给首页做缓存是一个不错的主意,那么主页的缓存策略是什么样子的呢,我认为应该是某个固定时间之内不变的,比如说2 分钟更新一次。或者根据不同的网页功能采取合理的策略。

在使用ehcache 的页面缓存之前,我们必须要了解ehcache 的2个概念:

(1)timeToIdleSeconds ,多长时间不访问该缓存,那么ehcache 就会清除该缓存。

(2)timeToLiveSeconds ,缓存的存活时间,从开始创建的时间算起。

1、配置ehcache.xml文件


2、在web.xml配置文件中配置过滤器信息

    好了,缓存整个页面看上去是非常的简单,甚至都不需要写一行代码,只需要几行配置就行了,够简单吧,虽然看上去简单,但是事实上内部实现却不简单哦,有兴趣的话,大家可以看看SimplePageCachingFilter 继承体系的源代码。

缓存首页(整个页面)示例:

01 < filter >
02         < filter-name > indexCacheFilter </filter-name >
03         < filter-class >
04             net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter
05         </filter-class >
06 </filter
07 < filter-mapping >
08         < filter-name > indexCacheFilter </filter-name >
09         < url-pattern > *index.action </url-pattern >
10 </filter-mapping >

缓存首页的部分内容时,需要使用SimplePageFragmentCachingFilter 这个filter 。如: 

01 < filter >
02         < filter-name > indexCacheFilter </filter-name >
03         < filter-class >
04             net.sf.ehcache.constructs.web.filter.SimplePageFragmentCachingFilter
05         </filter-class >
06 </filter
07 < filter-mapping >
08         < filter-name > indexCacheFilter </filter-name >
09         < url-pattern > */index_right.jsp </url-pattern >
10 </filter-mapping >

这个jsp 需要被jsp:include 到其他页面,这样就做到的局部页面的缓存。这一点貌似没有oscache 的tag 好用。

http://blog.csdn.net/l271640625/article/details/20528679