2010-09-28 44 views
7

Heroku本身支持memcache作爲插件。我的問題是,作爲一名rails新手,我還不知道如何使用memcache來加速我最耗時的請求(我通過查看newrelic分析知道他們是哪一個)。我們應該在Memcache之上使用像'cache-money'這樣的gem嗎?有人使用act_as_cached了嗎?如何使用memcache加速rails/heroku

我知道這是一個很瑣碎的問題。然而,在搜索了幾個小時後,我找不到一個體面的教程。任何幫助/鏈接表示讚賞!

+0

緩存是一種非常廣泛的話題,你可以做很多不同的類型。 Memcached沒什麼特別的;它只是一個你想要緩存的東西的存儲介質(因爲mysql可能是你希望持久存儲的對象的存儲空間)。另一種類型的緩存可能更適合您的特定頁面。無論如何,爲了獲得體面的答案,您需要向我們提供有關您的緩慢請求的更多詳細信息。它是什麼類型的頁面?公開,還是每個用戶都不同?大部分時間用於查詢數據庫或渲染視圖? – tfe 2010-09-28 20:22:03

+1

對於這個問題+1。我也在尋找一個體面的rails + memcache教程。 – 2011-11-14 18:33:47

回答

4

到MEMCACHE你可以看Caching in Rails 2.1,然後閱讀memcached documentation(我想你已經閱讀)中的Heroku。

另外,Touch and Cache是一個非常有趣的技術,可以避免在需要刷新緩存數據時編寫Sweepers以刪除緩存的內容。使用touch會自動過期緩存的數據,幾乎不需要編寫新的代碼。

請注意,今天,Heroku的memcached的集成假設你使用Rails> = 2.3.3

主要的想法是,你增加你的耗時的方法來Rails.cache結果(S)(其是通過其訪問您的緩存機制的接口)。當你獲取結果時,緩存機制會搜索它是否可以找到它,或者它是否已經過期。

如果找到它,它將以非常快的速度返回,因爲它會從緩存中取回它。

如果沒有找到它或者它已經過期(您在調用fetch時設置了此選項),它會運行實際的緩慢方法來添加它或將其刷新到緩存中。

最後,除了使用memcached還是使用內置的Rails緩存外,閱讀Rails文檔非常有用:Caching with Rails: An overview。除此之外它談論:

  • 頁面緩存
  • 動作緩存
  • 片段緩存
  • 清掃
  • SQL緩存
  • 更多...
0

您可以在內存緩存緩存action_cache或者,您可以訪問Rails.cache