1)简单粗暴型的,这里不用去管浏览器的user-agent,不管cookie等信息,每产生一次PV,就直接计数,优点:简单,缺点:可能不真实,也可能有刷量数据

2) 稍微细腻点的统计,会区分新老用户,楼主你可以研究下baidu统计的SDK,里面包含有用户的浏览器信息,操作系统信息、用户的地域信息等,也就是说, 你通过浏览器的javascript以及和服务器数据的交互,对于后台服务器来说,是可以获取这些数据的,那么对于站长之家这样的网站,他可能想要统计到 真实的用户访问情况,以便有些行为分析,这时会结合用户的IP信息、cookie信息(也就是session)和user-agent来统计分析,注意, 这里的IP是映射后的IP地址,对于我们日常的家庭拨号上网,都是拿到的运营商的虚拟出来的内网地址,以便节省IPv4资源,所以说,一个user- agent、IP、cookie基本上能唯一标识一个用户信息。

3) 进一步说,有了这些数据之后,从设计角度来说,阅读量的这个信息在页面展现中不是优先级最高的(优先级最高的应该是业务内容本身),但阅读量的相关信息是 有意义的,那么问题来了,对于阅读量这种信息是否在数据库的设计层面上要加写锁去互斥? 这里推荐了解下什么是CAP原理。

4) 所以解决方案,可能是缓存,也可能是有IP的判断、cookie的检测,这个要尝试之后才知道了,不过个人觉得可能性最大的是这个阅读量,汽车之家采用的是一个异步统计的办法,也就是说你产生真实的阅读之后,他是经过后台处理之后才给阅读量计数器+1的。
提供一下实现这种思路:

    • 一个IP最多只增加两次阅读类似的机制,或者还有更深一层次逻辑判断的,比如第二天IP清空,然后这个统计算法变成了每一天每一个IP都有两次阅读次数增加的机会

    • 一段固定时间内(比如30分钟),不管你用同一个浏览器内核访问多少次只增加一次阅读量。

    • 校验user-agent、cookie等信息;每一次浏览插入一条访客记录到A表

    • 微博实现:我是做微博的,我说说微博的做法。阅读量,点赞数,单访问限制。都是用redis实现的。然后每天夜里空闲时段同步数据库(按一定规则,分批等)。

    • 如果用户已经登录,只统计一次;如果是游客,则根据IP、timestamp、cookie等综合判断,相同就只统计一次。
      这样可以防止刷浏览量。

最新文章

  1. 隐式意图启动一个Activity
  2. C8051逆向电阻屏:头儿拍脑袋说电阻屏IC好赚钱3块钱成本能卖20几块。,一个月不分昼夜逆向成功后头儿说电阻屏已经被市场淘汰请放弃治疗。
  3. Leetcode 226. Invert Binary Tree
  4. KVM虚拟机网络基础及优化说明
  5. javascript面向对象知识点
  6. [置顶] 斗地主算法的设计与实现--项目介绍&如何定义和构造一张牌
  7. 【转】android Camera 中添加一种场景模式
  8. 获取UIButton的一些属性
  9. Github 的系统内部都在用什么开源软件?
  10. [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
  11. tp5 日志文件名称问题
  12. Centos6 iptables 防火墙设置【转】
  13. 再也不用被this苦恼了
  14. 用react+redux写一个todo
  15. codeforces471B
  16. 三个<li>元素放一行
  17. Javascript设计模式理论与实战:单例模式
  18. WPF中使用WindowChrome自定义窗口中遇到的最大化问题
  19. IntelliJ IDEA 学习(三):IntelliJ IDEA 快捷键、配置优化
  20. 使用QQ第三方登录 并在父页面跳转刷新

热门文章

  1. Mac下用apache搭建一个局域网服务器
  2. 关于AES加密,以及各种分组加密
  3. DB2输出每隔10分钟的数据
  4. Redis 常用命令学四:列表类型命令
  5. 微软的一道网红Java面试题
  6. 第6章:LeetCode--数组(冒泡排序、快速排序)
  7. nginx 设置开机启动
  8. 跟我一起学编程—《Scratch编程》第22课:颠弹力球
  9. Qt里的原子操作QAtomicInteger,有挑战性,使用Q_ATOMIC_INT{nn}_IS_SUPPORTED测试系统是否支持
  10. THUPC2019/CTS2019/APIO2019游记