ruby-on-rails - Rails 计数器缓存与计算

标签 ruby-on-rails

我有一个要显示总计的集合,这个想法是为我需要的每个总计使用缓存。但是,我还需要深入研究数据集。所以很可能无论如何我都必须加载集合。那么我应该仍然使用缓存还是只使用计算?

最佳答案

正如斯蒂芬·奥唐奈 (Stephen ODonnell) 所说,“……取决于收藏的规模。”但是,您还需要考虑 每页进行此计算的次数 .例如,如果您正在做一个博客应用程序并且帖子/索引页面显示 10 个博客帖子,每个帖子的底部都有“155 条评论”,那么使用计数器缓存可以避免大量的数据库调用。

我建议仅通过事件记录搜索来尝试,但要添加“包含”选项。假设 123 号帖子有 50 条评论。

p = Post.find_by_id(123)
p.comments.each do {|c| puts c } #Do something meaningful instead...

将生成 51 个数据库调用,1 个用于 Post,1 个用于每个评论。相反,你可以这样做:
Post.find_by_id(123, :include => [:comments])

现在它会在您搜索帖子时自动查询评论,将 51 个查询合并为 1 个。

关于ruby-on-rails - Rails 计数器缓存与计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1232841/

相关文章:

ruby-on-rails - 在 ruby​​ (NoMethodError) 模块中定义一个方法

ruby-on-rails - 如何使用法拉第模拟 rspec 中的请求超时

sql - Rails 中 Postgresql 的准备语句

ruby-on-rails - 运行 heroku db :pull 时无法获取表信息

ruby-on-rails - 具有不同架构的多个数据库的 rake 任务

mysql - 是否可以使用 mongrel 创建delayed_job 作为Windows 服务?

javascript - 干净利落!当用户点击 link_to image_tag 时模型的属性

ruby-on-rails - 如何在 OpenURI (Ruby) 中发送自定义 header 并检查它们

ruby-on-rails - 对于 Rails 应用程序,如何显示多个 flash[ :notice] in html?

ruby-on-rails - 按其他散列中的值对散​​列进行排序 - Ruby on Rails