假設您有一段顯示最近發佈帖子的頁面,並在30分鐘內過期。我在這裏使用Rails。爲memcached和Rails組合片段和對象緩存的最佳方法
<% cache("recent_posts", :expires_in => 30.minutes) do %>
...
<% end %>
很明顯,你不需要做數據庫查詢,以獲得最新的職位,如果片段存在,所以你應該能夠避免這種開銷太大。
我現在正在做的是這樣的控制器,似乎工作:
unless Rails.cache.exist? "views/recent_posts"
@posts = Post.find(:all, :limit=>20, :order=>"updated_at DESC")
end
這是最好的辦法嗎?它安全嗎?
有一件事我不明白是爲什麼,關鍵是「recent_posts
」的片段和「views/recent_posts
」後來檢查的時候,但我看memcached -vv
,看它是什麼使用後,來到了這一點。另外,我不喜歡手動輸入「recent_posts
」的重複,最好將它保存在一個地方。
想法?
雖然我認爲Lar的答案可能會更清晰一點,並且避免使用元編程,但您的答案更好,因爲廣告更接近MVC。我已經把他們兩個都視爲有效,但將留給社區決定(不會選擇一個接受:)謝謝! – 2009-06-24 20:34:57