【发布时间】:2012-09-25 08:21:15
【问题描述】:
使用 Rails 3.1.1 和 Heroku。
我相信这应该是一个相当容易解决的问题,但我找不到(也很容易验证)如何做到这一点。我有一个非常慢的控制器(6 秒)Product#show,有很多 N+1 和其他我必须解决的问题。
该网站是一个两栏网站(main-column 和right-column),其中Product#show 的主要内容显示在一栏,daily product 显示在另一栏,包括一个“随机数据库中的产品”。
我想要做的是让main-column中由Product#show创建的内容被缓存(从而绕过控制器并赢得6秒)。但是,我确实希望右列是动态的(并为每个页面请求加载)。
如果我使用caches_page :show,它将缓存整个网站,包括right-column,这使我必须每天使缓存过期才能加载新的Daily Product。不是一个好的解决方案。
如果我使用cache('product-show' + @product.slug) do,它只会缓存视图(对吗?)并且仍然需要通过控制器。
那么,我该如何解决呢?
【问题讨论】:
-
但是使用片段缓存会导致控制器被加载!似乎动作缓存是正确的选择(根据我自己的研究),但我无法验证它是否有效,所以我希望有人确认。
标签: ruby-on-rails caching