集思广益,关于有效浏览次数的计算,大家都是如何来做呢?

比如一个人对同一篇文章不停得刷新,这样不能算有效。我现在的想法是当用户第一次浏览文章的时候存一个cookie,cookie里有文章的id,有效期一个小时,如果同一小时,该用户访问该文章,如果cookie存在则不记录。不知道大家又没有更加高端,友好的统计方式。

阅读 6.9k
评论
    7 个回答

    浏览记录最好通过日志来记录,然后进行日志分析即可,好处是异步。

    日志记录用户ID,URL,访问时间。然后简单去做去重统计即可。

      登录用户:用户ID+log+时间判断
      未登录用户:客户端IP+log+时间判断
      cookie也不错的,如果要节约资源直接CNZZ统计、百度统计

        cookie记录不太合适,会造成request http header过大,现代浏览器可以用local storage存储在客户端,判断是否存在文章id再进行计数的request

          这种统计就交给CNZZ,百度统计,谷歌统计等第三方统计平台吧。
          浏览量,单页面浏览量,单人单页面浏览量,老访客,新访客等等都能统计到,展现方式也很友好。
          还能数据导出。

            • 131

            可以采用bitmap思想:每篇文章对应一个bitmap,每个uid对应bitmap中的某offset,某uid访问这篇文章,把uid对应的offset置为1。这样就不会出现重复访问的问题,而且有现成的方法计算值为1的bit的数量。如果网站访问量不是很大的话,每篇文章对应的bitmap为128*128足够了。这样有点是简单,缺点可能就是还有存在资源浪费。

              自己做个事件记录

              客户端:
              检测cookie,没有就随机生成一个作为客户标识(uid),并将超时设置很长很长....
              js发送一条请求到事件记录服务器,参数:timestamp uid eventName eventValue
              eventName 是事件名,比如 postVisit
              eventValue是事件值,比如 <帖子ID>

              服务端:
              1. 记录事件到文件,可以按时间比如10分钟一个文件
              2. 写个脚本 定时(10分钟)处理事件记录文件,根据eventName,eventValue 计算帖子访问量,然后更新数据库中对应字段(累加)

              自由组合eventName,eventValue可以做多种事件统计

                • 4
                • 新人请关照

                抛砖引玉一下,异步请求,用bloomfilter后台判断:
                用户登录用用户id,用户未登录,用IP+UA或者其他生成用户标识
                后台有一个bloomfilter的集合,用来判断是否已存在

                  撰写回答

                  登录后参与交流、获取后续更新提醒

                  相似问题
                  推荐文章