【问题标题】:how to use memcache to speed-up rails/heroku如何使用 memcache 加速 rails/heroku
【发布时间】:2011-04-18 12:06:55
【问题描述】:

Heroku 原生支持 memcache 作为插件。我的问题是,作为一个 Rails 新手,我不知道如何使用 memcache 来加快我最耗时的请求(我通过查看 newrelic 分析知道它们是什么)。我们应该在 memcache 上使用像“cache-money”这样的 gem 吗?有人再使用 act_as_cached 了吗?

我知道这是一个非常琐碎的问题。然而,在网上搜索了几个小时后,我找不到像样的教程。任何帮助/链接表示赞赏!

【问题讨论】:

  • 缓存是一个非常广泛的话题,你可以做很多不同的类型。 Memcached 没什么特别的。它只是你想要缓存的东西的存储介质(因为 mysql 可能是你想要持久化的对象的存储)。另一种类型的缓存可能更适合您的特定页面。在任何情况下,您都需要向我们提供有关您的缓慢请求的更多详细信息,以便获得体面的答案。它是什么样的页面?公开的,还是对每个用户不同?大部分时间是花在查询数据库还是渲染视图上?
  • 这个问题+1。我也在寻找一个不错的 rails + memcache 教程。

标签: ruby-on-rails caching heroku memcached


【解决方案1】:

您可以在 Heroku 中观看 Caching in Rails 2.1,然后阅读 memcached documentation(我想您已经阅读过)。

另外,Touch and Cache 是一种非常有趣的技术,可以避免在需要刷新缓存数据时使用 Sweeper 来删除缓存内容。使用触摸会自动使缓存数据过期,几乎不需要编写新代码。

请注意,今天,Heroku memcached 集成假设您使用的是 Rails >= 2.3.3

主要思想是将耗时方法的结果添加到 Rails.cache(这是您访问缓存机制的接口)。当您获取该结果时,缓存机制会搜索以查看它是否可以找到它或它是否尚未过期。

如果找到它,它会非常快地返回它,因为它会从缓存中获取它。

如果它没有找到它或者它已经过期(你在调用 fetch 时设置它),它会运行实际的慢速方法来添加它或在缓存中刷新它。

最后,阅读 Rails 文档非常有用,无论您使用的是 memcached 还是内置的 Rails 缓存:Caching with Rails: An overview。除其他外,它谈到:

  • 页面缓存
  • 动作缓存
  • 片段缓存
  • 扫地机
  • SQL 缓存
  • 还有更多...

【讨论】:

    【解决方案2】:

    你可以在 memcache 上缓存 action_cache 或者你可以通过 Rails.cache 访问 memcache

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-20
      • 2013-08-13
      • 1970-01-01
      • 2013-07-16
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多