最近结束了一个小型网站项目,主要功能就是一个文章系统,为了提升站点性能,我在首页上使用了OSCache,在访问首页时,性能的确有不小的提升(具体数据见《JMeter小实验——JSP性能简单测试》),但我对此并不满足,打算使用Hibernate的二级缓存来优化访问文章和栏目时的速度。 Hibernate的二级缓存有很多选择,我选择了默认的EHCache。它的配置十分简单,只要在Hibernate配置里加入
然后在Classpath里加入EHCache.xml文件,我的文件内容如下:
JavaEye上的《hibernate二级缓存攻略》对这些属性有如下说明:
注意:我的配置中最大元素设成了1000。 如果希望每个缓存的POJO有自己的配置,可以把defaultCache换成cache name="com.xxx.pojo.Foo"。 完成了EHCache.xml的配置,接下来在每个要被缓存的POJO映射 文件里加入
其中read-write是缓存策略,Hibernate还有read-only、nonstrict-read-write和transactional这些策略以供选择。 配置完成后,我用JMeter测试,发现头两次访问的时间很长,但随后的访问速度有很大提升,数字上相差两位呢。虽然在实际使用时还有网络等因素会影响站点的访问,不过总的来说对于这样的小型文章系统,二级缓存的使用还是对整体性能有帮助的。最后要做的就是根据实际使用情况,适当调整一下缓存设置,我用SpringAOP建立了一个处理日志的拦截器,记录访问量和访问间隔,先让它运行一段时间,随后根据日志情况对缓存作调整。