應用程序爲了提高性能,可以通過使用緩存來達到目的,緩存的存儲介質可以
內存或者硬盤,通常將數據存儲在內存裏,確切的說是jvm的內存中,緩存是
基於Map這種思想構建的,以鍵值對的方式進行存取,之所以還可以將
緩存的數據存儲在硬盤中,是因爲內存資源相當有限和寶貴,所以當內存資源
不足的時候,就可以將其存儲到硬盤中,雖然硬盤的存取速度比內存要慢,但是
因爲減少了網絡通信量,所以還是提高程序的性能。緩存可以分爲客戶端緩存和
服務器端緩存,所謂的客戶端緩存通常指的是IE瀏覽器的緩存,服務器端緩存指
的web服務器的緩存,通常可以通過第三方組件實現,如oscache,memcache
我們通常將那些頻繁訪問但是又不是經常改變的數據進行緩存。爲了保證緩存數據的
有效性,在數據發生改變的時候,我們要刷新緩存,避免髒數據的出現。刷新緩存的
策略有兩種,一種是定時刷新,一種手動刷新。
緩存的層次如下:jsp-->action-->service(通常放置在service)-->dao,
緩存越靠前對性能的提升越大
緩存的策略:(緩存空間不足需要進行清理的時候使用)
LRU:最近最少使用原則.(理解:存儲書)
FIFO:先進先出的緩存策略.(理解:排隊)
你來說說緩存?說說你對緩存的理解(如果遇到重複的,就可以省略)
我們在項目中使用緩存的目的是爲了提高應用程序的性能,減少訪問數據庫
的次數,從而提高應用程序的吞吐量。我們通常將權限,菜單,組織機構
這些頻繁訪問但是不經常改變的基礎數據進行緩存,其中我在做()某某項目的時候
就通過oscache對ZTree的樹形菜單進行了緩存,並且在做的時候和單列設計
模式進行結合,考慮到多線程下的安全問題,還對單例模式加入了雙重判定鎖
的檢查方式。