2011-11-23 125 views
4

我看了官方指南。它說有page cacheaction cachefragment cache,但他們不是我想要的。如何在Rails中緩存任意對象(基於時間)?

我只是想緩存的對象,而不是整個頁面或視圖片段,像這樣的僞代碼:

def show 
    cache @ads, :expires_in => 1.hour do 
    @ads = Advertisement.all 
    do 
end 

這可能嗎?與memcacheredis

+1

緩存對象是指序列化(通常是通過Marshal.dump/Marshal.load)。要小心,因爲一些對象不能被序列化。一些其他人有大的對象圖(指向其他大對象的屬性和變量),這些對象的序列化/反序列化可能既昂貴又會佔用比預期更多的空間。例如,通過將ActiveRecord對象序列化爲redis/memcache來「緩存」它是**不是一個好主意。 –

回答

2

嘗試這種情況:

#To cache the object 
Rails.cache.write('cache-key', object) 

#Load the object from the cache 
Rails.cache.read('cache-key')