我有一个要显示总计的集合,这个想法是为我需要的每个总计使用缓存。但是,我还需要深入研究数据集。所以很可能无论如何我都必须加载集合。那么我应该仍然使用缓存还是只使用计算?
最佳答案
正如斯蒂芬·奥唐奈 (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/