代码之家  ›  专栏  ›  技术社区  ›  Madhusudhan

内容的页面视图数

  •  3
  • Madhusudhan  · 技术社区  · 15 年前

    我正在开发一个网站,我需要跟踪特定内容(比如说文章)的浏览量。

    这与stackoverflow的观点非常相似。

    我不知道stackoverflow是怎么做到的。基本上应该

    1. 当文章作者以外的用户访问文章时,增加视图。如果他一直按刷新按钮,则不应增加视图。
    2. 如果访问者连续点击刷新按钮,则不增加视图,但应在第一次访问时增加视图。

    我在数据库中有一个字段来保存视图数。

    有人知道stackoverflow是怎么做到的吗?rails中有我可以使用的插件吗?我想我应该使用会话和IP地址来跟踪。。。我应该利用原木吗?或者谷歌分析?

    帮助。。。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    根据需要的精确程度,您可能需要有一个包含用户已阅读哪篇文章的记录的表。他们的MAC地址没有随HTTP请求一起发送,他们的IP(v4)地址可能不是唯一的 足够地 .

    如果你想显示数据(像stackoverflow那样),你不能真正使用分析。

    将代码添加到控制器方法中以增加数据库字段比解析日志文件和在Rails外部挂接到数据库中要容易得多。

    伪ish代码(检查API的语法):

    ArticlesController < ApplicationController
      def show
        @article = Article.find(params[:id])
        # Create an ArticleReading (your join table) for this user unless one already exists
        current_user.article_readings.find_or_create_by_article_id(@article)
        # Count the number of users that have read this article
        @article_readings = ArticleReading.count(@article.id)
      end
    end
    

    你可以使用一个插件-我以前用过一个插件来标记为“read”,这可能是合适的(或者至少是合适的)。读一读 this question ,然后点击谷歌。

        2
  •  0
  •   Nimesh Nikum    15 年前

    我也不知道堆栈溢出是如何实现的,但我想您可以在更新视图计数时通过标识mac地址或当前用户id来决定它。这意味着当用户第一次浏览一个页面时,计数将被更新,你可以跟踪mac地址。同样,如果出现相同的请求,如果来自具有相同mac地址的系统,则应拒绝该请求。