CMS中緩存顯的至關重要,CMS中的緩存主要有靜態緩存和動態緩存兩種技術,但看下來現在覺得這兩種也只是對于最終信息頁面的緩存,現在的需求是:
1、站點、欄目、信息列表的緩存。
2、信息頁面的緩存。
對于需求2使用動態和靜態緩存的技術都可以較為簡單的實現,但對于需求1則不同,需求1中的站點、欄目和信息列表是時時動態的,而且還有分頁以及結合權限控制的問題,在這種情況下,用生成靜態頁面的辦法是很難實現的,幾乎就不可能,那么通常我們想到的第一種最為直接的方法就是借助數據庫緩存來實現,就拿基于Hibernate的來說,Hibernate提供的緩存是對于PO以及PO關聯的緩存,但同樣是無法實現上述需求中所要的效果的,目前暫時還沒想出什么好的解決方案,準備去翻閱一下jsr170,不知道是不是因為大家覺得對站點、欄目和信息列表做緩存沒意義,誠然,站點和欄目列表可能本來就不會很多,所以緩存的意義不是那么的大,但信息列表緩存的意義則非常明顯。
分頁以及結合權限控制是實現此緩存技術的難點,其實這個也可以引申到整個系統,成為系統級的緩存技術,如大家有這方面的經驗,請不吝賜教!
列一個校驗的場景:
在一個信息列表中,每個信息的權限有多種情況,比如信息列表中存在A、B、C三條信息,各條信息的權限授予給了(guest,admin)、(guest)、(admin),這個時候要獲取guest的信息列表,加入cache需要提高效率的地方就在于避免獲取信息列表時需與數據庫進行實時的查詢,同時要注意,一般來說,系統的信息數據量會是比較的大。