1

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

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

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

谢谢,阿杰·库马尔 G

4

1 回答 1

0

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

你试过吗?如果这不起作用,请向我们展示您的观点。


编辑:回复评论。

好吧,一般来说,如果您使用片段缓存,那么不调用控制器操作是没有意义的,因为您不会设置任何变量,如果没有变量,那么您为什么不使用页面缓存呢?

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

于 2011-05-29T14:53:38.760 回答