2010-07-11 19 views

回答

6

This guide提供了Rails內置緩存備選方案的很好概述。但總結:


頁面緩存:使下一次有人請求它可以在同一動作在第一時間控制器動作要求整個生成頁面的副本被寫入到一個靜態的HTML文件由Web服務器提供服務,根本不需要打開Rails應用程序。這是超快的,但有一些限制,例如對緩存頁面的請求不會通過您的應用程序進行,因此您無法使用篩選器進行身份驗證並限制頁面訪問。

動作緩存:請求總是從Web服務器去你的Rails應用程序,使您的過濾器運行,但如果請求通過過濾器和動作被緩存,則高速緩存副本servered,而不是實際運行的代碼在你的控制器行動。限制:同一個緩存內容提供給所有用戶,因此頁面不能有任何個性化數據(如顯示已登錄的用戶名在頭)

片段緩存:控制器動作的代碼運行,但內查看頁面的各個塊可以被緩存。例如如果我們在側邊欄中有一些計算密集型的東西。


您鏈接的插件添加了額外的粒度層。動作內容被緩存,但不是佈局內容,所以如果佈局包含<%= curent_user.full_name %>例如,那麼這仍然會爲每個用戶個性化。

如果你有很多用戶特定的數據,但它仍然保持每個用戶在一段合理的時間內不變,那麼你可以看看caching at the ActiveRecord query level而不是在視圖級別。

+0

謝謝!這非常有幫助 - 我一直在尋找類似於查詢級緩存的東西。 – amfeng 2010-07-11 17:24:40