緩存實現(xiàn)的層面有很多:
1、對象緩存
由ORM框架提供,透明性訪問,細(xì)顆粒度緩存數(shù)據(jù)庫查詢結(jié)果,無需業(yè)務(wù)代碼顯式編程。當(dāng)軟件結(jié)構(gòu)按照ORM框架的要求進行針對性設(shè)計,使用對象緩存將會極大降低web系統(tǒng)對于數(shù)據(jù)庫的訪問請求。因為類似Hibernate這樣的ORM,良好的設(shè)計數(shù)據(jù)庫結(jié)構(gòu)和利用對象緩存,在大負(fù)載網(wǎng)站,能夠提供極高的性能。因為使用對象緩存也無需顯式編程,所以適用范圍也最廣泛。
2、查詢緩存
對數(shù)據(jù)庫查詢結(jié)果行集進行緩存,適用于一些耗時,但是時效性要求比較低的場景。iBATIS就只能使用查詢緩存,而無對象緩存。查詢緩存和對象緩存適用的場景不一樣,是互為補充的。
3、片斷緩存
針對動態(tài)頁面的局部片斷內(nèi)容進行緩存,適用于一些個性化但不經(jīng)常更新的頁面(例如博客)。OSCache提供了相當(dāng)簡陋的片斷緩存,而RoR則提供了相當(dāng)好的片斷緩存機制。
4、Action緩存
針對URL訪問返回的頁面結(jié)果進行緩存,適用于粗粒度的頁面緩存,例如新聞發(fā)布。OScache提供了相當(dāng)簡陋的Action緩存(通過web.xml中的配置),而RoR提供了相當(dāng)好的Action緩存。
緩存不能一概而論,以上每種緩存分別適用于各自的場景,緩存不同的層面。當(dāng)然你可以在應(yīng)用程序當(dāng)中把4種緩存一起用上。