2011-07-24 63 views
1

我有一個快速問題,一直在困擾着我。我想在我的Rails 3.1.rc4網站的主頁上放置一個計數器來宣傳網站數據庫中有多少微博帖子。問題是隨着時間的推移,這個數字會變得非常大,我不想使用像Post.find(:all).count這樣的東西。所以這就是我的問題所在:是否有一個簡單的緩存(可以讓我們說8個小時),以及非資源密集的方式來顯示數據庫中的記錄數量?我正在使用ActiveRecord和Heroku託管(沒有Varnish緩存的Cedar Stack)。Rails 3.1主頁記錄計數器

感謝您的幫助!

回答

3

呀,用Post.count,如果你希望緩存結果8小時,這樣做:

Rails.cache.fetch(:posts_count, :expires_in => 8.hours) do 
    Post.count 
end 
+0

感謝ream88!如果我想由於某種原因將緩存過期,那麼最好的方法是什麼? –

+0

將':force => true'添加到fetch調用或調用'Rails.cache.delete(:posts_count)'。 –

+0

很酷,只是爲了確認:這應該放在我的控制器中,並在視圖中以'@ posts_count'或':posts_count'的形式被調用? –

0

只需使用Post.count即可在SQL中使用select count(id) from posts;