2

我有一个模型,它是一个图片库。我想跟踪图像获得的浏览量。目前我在控制器中实现了这一点

 def show
    @article = Post.find(params[:id])
    @article.views += 1
    @article.save
 end

但是,这只会在访问完整视图时增加视图计数器(并且此方法还会阻止我缓存模板)。我还想在索引集合视图中显示缩略图时增加视图(因为这些也是有效的印象),以及搜索,在“喜欢”,“收藏夹”等的其他演示文稿中。

换句话说,每当显示完整图像或图像的缩略图时,我都想增加视图计数器。是否有任何模式/范式可以在 Rails 中实现这一目标?

我是否应该在 javascript 中执行此操作,以便在页面加载后,我得到页面上每个帖子 ID 的列表,然后 ajaxly 命中另一个控制器,该控制器增加所有这些帖子的视图计数器?

4

1 回答 1

0

你可以覆盖你的路线。我在一个项目中做过一次:

/user_images/#{random}.jpg => 我把它路由到一个控制器,控制器从数据库中获取图像,增加它然后提供它。这也有效果,如果有人交叉链接这个图像,你会算上它。

但是有一个很大的问题! 它的性价比。我从一个 imagehoster 开始,太可怕了!然后我改变了它。每小时我都会通过 cronjob 传递我的 apache 的日志文件,并计算视图。然后我将它添加到数据库中。这解决了我所有的性能漏洞。

于 2011-12-27T06:23:38.637 回答