2010-09-28 50 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