1. 程式人生 > >springmvc結合ehcache實現共享物件快取

springmvc結合ehcache實現共享物件快取

筆者最近在學習Web效能優化的知識,想用springmvc結合ehcache來實現共享物件快取,可是網上的很多教程講得不是很清楚,加上本人對spring的知識還沒有完全熟悉,所以在實現過程中碰到了各種各樣的問題。現在將我的實驗過程記錄下來,以便以後回顧並且給廣大正努力學習的同學參考參考。以下的程式碼基礎是我自己本人寫的小demo,具體功能以及實現請忽略,這裡只關注快取實現,並且預設大家已經都寫過簡單的springmvc專案,關於springmvc的配置就不多述。

具體實驗步驟如下:

首先在之前的springmvc專案的pom.xml裡增加ehcache依賴包,如下:

         

然後在springmvc配置檔案裡增加快取配置,主要配置啟動快取註解功能和基於ehcache實現的快取管理器,要注意的是不要忘記在最上方新增cache的名稱空間:

   

接著配置ehcache.xml,定義快取的策略。在這個簡單的例子裡我只定義了名為“myCache”的一個快取:

 

到此關於配置的內容就都實現了,接下來來實現快取。

我是在點選特定菜品返回菜品資訊功能上加上快取,即CuisineService裡的getCuisineByName方法,該方法呼叫dao層(我命名為CuisineRepository)的對應方法,同時輸出資訊提示呼叫該函式。具體如下:

   

然後在controller裡呼叫service裡的函式,同時列印輸出“myCache”快取物件裡的資訊:

 

最終執行結果如下:

   第一次點選,結果如下:

 

此時myCache裡沒有快取。

   第二、第三次執行,如下:


沒有輸出service裡的資訊“呼叫了測試快取的方法”,同時myCache裡有快取輸出,證明除了第一次訪問呼叫了service裡的方法,以後的訪問都是使用快取裡的資訊。

此外,我還用ab命令對效能進行測試,結果如下:

有快取:

               

沒快取:

       

可以看到有快取的各方面的效能確實比沒快取的好。