【问题标题】:Rails 4 Fragment CachingRails 4 片段缓存
【发布时间】:2015-06-20 20:14:06
【问题描述】:

我正在尝试提高我的应用的性能,因此我正在研究片段缓存。

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

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

@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"

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

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

谢谢。

【问题讨论】:

  • 也可以缓存最近文章查询:Rails.cache.fetch([cache_keys]) {@recent_articles = Article.get_recent}

标签: ruby-on-rails caching memcached


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 2014-12-23
    • 1970-01-01
    • 2016-07-18
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    相关资源
    最近更新 更多