利用缓存提高小型站点性能

        最近结束了一个小型网站项目,主要功能就是一个文章系统,为了提升站点性能,我在首页上使用了OSCache,在访问首页时,性能的确有不小的提升(具体数据见《JMeter小实验——JSP性能简单测试》),但我对此并不满足,打算使用Hibernate的二级缓存来优化访问文章和栏目时的速度。
        Hibernate的二级缓存有很多选择,我选择了默认的EHCache。它的配置十分简单,只要在Hibernate配置里加入hibernate.cache.provider_class=net.sf.hibernate.cache.EhCacheProvider,然后在Classpath里加入EHCache.xml文件,我的文件内容如下:

<ehcache>
    <diskStore path="java.io.tmpdir"/>
    <defaultCache
        maxElementsInMemory="1000"
        eternal="false"
        timeToIdleSeconds="600"
        timeToLiveSeconds="600"
        overflowToDisk="false"
        />
</ehcache>

        JavaEye上的《hibernate二级缓存攻略》对这些属性有如下说明:eternal表示缓存是不是永远不超时,timeToLiveSeconds是缓存中每个元素(这里也就是一个POJO)的超时时间,如果eternal="false",超过指定的时间,这个元素就被移走了。timeToIdleSeconds是发呆时间,是可选的。当往缓存里面put的元素超过500个时,如果overflowToDisk="true",就会把缓存中的部分数据保存在硬盘上的临时文件里面。注意:我的配置中最大元素设成了1000。
        如果希望每个缓存的POJO有自己的配置,可以把defaultCache换成cache name="com.xxx.pojo.Foo"。
        完成了EHCache.xml的配置,接下来在每个要被缓存的POJO映射 文件里加入<cache usage="read-write" />,其中read-write是缓存策略,Hibernate还有read-only、nonstrict-read-write和transactional这些策略以供选择。
        配置完成后,我用JMeter测试,发现头两次访问的时间很长,但随后的访问速度有很大提升,数字上相差两位呢。虽然在实际使用时还有网络等因素会影响站点的访问,不过总的来说对于这样的小型文章系统,二级缓存的使用还是对整体性能有帮助的。最后要做的就是根据实际使用情况,适当调整一下缓存设置,我用SpringAOP建立了一个处理日志的拦截器,记录访问量和访问间隔,先让它运行一段时间,随后根据日志情况对缓存作调整。

你可能感兴趣的:(jsp,xml,Hibernate,.net,cache)