博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
博客项目之设计访客统计
阅读量:6078 次
发布时间:2019-06-20

本文共 943 字,大约阅读时间需要 3 分钟。

分类统计

需求:

统计用户点击这三个分类的次数,用来分析用户喜欢哪些话题。

857662-20161124110547065-1748485343.png

实现原理:

通过给a标签设置一个背景图片属性,当点击的时候发送一条请求给服务器。

857662-20161124111112753-985554700.png

服务器端:
app.get('/stat',routes.stat);
数据库:

设置相应的几个字段

接着处理相应的请求,如下

857662-20161124111424096-386326871.png

请求的参数就是对应的key,因此只需要先将对应的数据先查询出来,然后在其基础上 + 1 即可。

对应的数据表

857662-20161124111728690-1521472657.png

完。

统计首页用户请求来源

如果懂点HTTP该有多好,那是很久以后才明白的。

HTTP中的请求头部有一个referer属性,这个属性记录着用户从哪个页面过来的,因此只需要在服务器脚本中写上这么一句就可以了。

857662-20161124115236518-1448028689.png

nodejs中的

req.headers.referer

可以用来获取来源。

在数据中查到的数据

857662-20161124115407940-1220156589.png

完。

统计用户访问量

思路:

通过获取用户的IP地址来统计访问量

实现方法:

nodejs通过如下可以获取到用户的ip

req.connection.remoteAddress
数据库设计思路
[    {        visitorip:["127.0.0.1","162.124.0.24","182.150.1.56"],        date:currentDate    }]

currentDate为当天的日期,将同一天访问的ip,都添加到同一个数组中,否则新建一个对象。

实现过程

857662-20161124172104815-431042781.png

查询当天有没有相关的数据

false

新建一个对象,将对应的数据插入进去

true

在原数据的基础上再添加一条,接着将这个新数组更新到数据库中

一些乱想

在添加到数据库之前,并没有过滤重复IP,这样的原因是:这些重复的数据也许有其他用处。

能保留完整的数据尽量保留完整,而过滤应该是单独考虑的事。

用户访问量统计

857662-20161124173603690-429876510.png

获取前几天的访问量将数组倒序一些即可,因为mongodb后添加的数据越往后。

这里的访问量并不包括重复的IP,因此通过map方法将所有数据通过Set对象过滤,再取它的长度即可。

获取到的数据

857662-20161124175100237-35026607.png

结果

857662-20161124175220362-44848708.png

一些问题

这个设计中,关于统计都是通过客服端或服务器来计算的,并没有将这些计算的结果单独设计一个字段,如果数据量较大的情况下,会不会出现什么问题,这是值得思考的问题。

完。

转载地址:http://vuhgx.baihongyu.com/

你可能感兴趣的文章
带空格文件名的处理(find xargs grep ..etc)
查看>>
华为Access、Hybrid和Trunk的区别和设置
查看>>
centos使用docker下安装mysql并配置、nginx
查看>>
关于HTML5的理解
查看>>
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>