我已经使用inherited_resource插件构建了一个应用程序,并准备投入生产。
现在,我正在寻找为同一应用程序实现缓存的方法。由于我有一些依赖于current_user的页面片段,我将使用片段缓存机制。
有人可以为我提供一个指针或资源,以帮助为基于inherited_resource的视图和控制器实现片段缓存吗?
谢谢阿杰·库马尔 G
我不使用inherited_resources,但我的理解是它只是控制器的快捷方式。 您的视图应该只是标准的,在这种情况下,您可以使用片段缓存,如 Rails Guide 中所述 http://guides.rubyonrails.org/caching_with_rails.html#fragment-caching
你试过吗? 如果这不起作用,请向我们展示您的视图。
编辑:对评论的回应。
啊,好的,所以一般来说,如果您使用片段缓存,不调用控制器操作是没有意义的,因为您不会设置任何变量,如果没有变量,那为什么不使用页面缓存?
为了防止查询触发,带有 arel 的 ActiveRecord 3.0 是您的朋友。 例如,如果你把@posts = Post.where(:p ublished => true)放在你的操作中,那么在你调用@posts.each之前,它不会被调用,所以如果你把它放在缓存块中,它永远不会被调用。 我不确定inherited_resources默认做什么,但鉴于它是由何塞·瓦利姆编写的,我想他默认情况下会使用 ActiveRecord 的该功能,如果不是,则很容易自定义。 可以通过为开发环境启用缓存并查看日志以查看正在触发的查询来对其进行测试。