Rails 3:从控制器缓存*所有*页面而无需手动添加它们

时间:2012-01-24 17:30:15

标签: ruby-on-rails ruby ruby-on-rails-3 performance caching

我们有一个Rails应用程序,其中包含一些可供所有页面使用的页面以及您在登录时只能看到的页面。我们将它们称为“公共”页面和“应用程序”页面。由于公共页面不会更改,我们希望为它们启用页面缓存。一个解决方案是手动添加

caches_page :index, ..

致所有公共控制人员。但是,我没有发现这方便和Rubyish。我们所有的公共控制器都继承自PublicController类(一些共享方法,行为,...),所以我想把缓存方法也放在PublicController中,以便默认缓存所有公共控制器(同样,public意味着或多或少的静态)内容)。但是没有

caches_page :all
在Rails中

。我想过使用像

这样的东西
self.new.public_methods(false)

然后遍历它们并将它们添加到缓存中。但由于这是在PublicController中,因此不会列出任何实际操作。

有没有人有这个问题的好方法?或者是方式的手动方式。

谢谢!

1 个答案:

答案 0 :(得分:3)

通过查看caches_page的工作方式,您可以添加过滤器来执行此操作:

after_filter :cache_page