Rails 4 Fragment Caching

时间:2014-04-12 07:08:29

标签: ruby-on-rails caching memcached

我试图提高应用的性能,以便我查看片段缓存。

我试图了解要缓存的内容。例如,在我网站的所有页面上,我显示了最近的文章列表。

在我的应用程序控制器中,我有一个设置过滤器:

@recent_articles = Article.get_recent

我的视图/页脚中有以下内容:

- cache(cache_key_for_recent_articles) do
          %h3 RECENT ARTICLES
          - @recent_articles.each do |article|
            .recent-article
              = link_to add_glyph_to_link("glyphicon glyphicon-chevron-right", article.name), article_path(article, recent: true)
          - if Article.count > 4
            = link_to "MORE ARTICLES", articles_path(), class: "btn btn-primary more-articles"

我的问题是。我是否适当地缓存了这个?我拖尾日志,但我看到了文章的查询,所以我假设没有。我不清楚当我在控制器中查询时会做什么,但是缓存页面的一部分。

这是一个低级缓存而不是片段缓存的地方吗?

感谢。

1 个答案:

答案 0 :(得分:0)

你做得对。这可能看起来很愚蠢,因为无论如何它总是要让db命中,但收益可能很大。想象一下,每篇文章都有带有图像的线程评论。在这种情况下,如果您保持控制器完全相同,使用相同的缓存构造将为您节省大量的数据库工作量。所以,是的,如果你可以从memcached中获取而不是通过haml运行一堆铁路助手(那些link_to不是免费的),你可以节省一点,但真实的当你可以巧妙地重构你的架构(尽可能懒惰)以便真正利用时,就会发现收益。文章的最初打击?你的db应该很好地缓存那个调用,我不确定你是否会想要过于积极地缓存它,在这种情况下,无论如何,给定调用方法的名称。