使用inherited_resources进行缓存

时间:2011-05-13 19:13:07

标签: ruby-on-rails ruby-on-rails-3 caching fragment inherited-resources

我已经使用inherited_resource插件构建了一个应用程序,并准备投入生产。

现在我正在研究为同一个应用程序实现缓存的方法。由于我有一些依赖于current_user的页面片段,我将使用片段缓存机制。

有人可以向我提供一个指针或资源,它有助于为基于inherited_resource的视图和控制器实现片段缓存吗?

谢谢, Ajay Kumar G

1 个答案:

答案 0 :(得分:0)

我不使用inherited_resources,但我的理解是它只是控制器的快捷方式。您的视图应该是标准的,在这种情况下,您可以使用片段缓存,如http://guides.rubyonrails.org/caching_with_rails.html#fragment-caching中的Rails指南中所述

你试过吗?如果这不起作用,请告诉我们您的观点是什么样的。


编辑:对评论的回复。

啊好吧,所以一般情况下如果你使用片段缓存,没有理由不调用控制器动作,因为你没有设置任何变量,如果没有变量那你为什么不使用页面缓存?

为了防止查询被触发,带有arel的ActiveRecord 3.0是你的朋友。例如,如果你在动作中放置@posts = Post.where(:published => true),那么在视图中调用@ posts.each之前不会调用它,所以如果你把它放在缓存块里面永远不会被召唤。我不确定inherited_resources默认做了什么,但鉴于它是由JoséValim编写的,我想他默认会使用ActiveRecord的这个功能,如果不是很容易定制的话。您可以通过为开发环境启用缓存并查看日志以查看正在触发的查询来测试它。