最近結束了一個小型網站項目,主要功能就是一個文章系統,為了提升站點性能,我在首頁上使用了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建立了一個處理日志的攔截器,記錄訪問量和訪問間隔,先讓它運行一段時間,隨后根據日志情況對緩存作調整。