前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【最佳实践】页面浏览量统计的绝佳实现

【最佳实践】页面浏览量统计的绝佳实现

原创
作者头像
huc_逆天
发布2024-01-20 21:13:49
4620
发布2024-01-20 21:13:49

本文,从页面浏览量统计的后端设计方面,给出了相应的解决方案,在生产环境,可以直接使用该方案。

前言

浏览量是用来计算站点上有多少网页被个体的访客来浏览。即页面访问量或点击量,用户每1次对网站中的每个网页访问均被记录1次。用户对同一页面的多次访问,访问量累计。

页面浏览量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。网页浏览数是评价网站流量最常用的指标之一,简称为PV。监测网站PV的变化趋势和分析其变化原因是很多站长定期要做的工作。

Page Views中的Page一般是指普通的html网页,也包含php、jsp等动态产生的html内容。来自浏览器的一次html内容请求会被看作一个PV,逐渐累计成为PV总数。

关系

1.IP和PV之间的关系:

PV是和IP的数量是成正比的,因为页面被刷新一次那么PV就会被记录一次,所以IP越多,说明网站的PV数据也就随之增多。但是需要注意的是PV并不是网站的页面的访问者数量,而是网站被访问的页面数量。因为一个访问者可以多次刷新页面,增加PV数量。

2.IP和UV之间的关系:

在记录网站流量统计数据时,站长们有时候发现这样一种情况:有时候网站的IP数据大于UV数据,有时候UV的数据也会大于IP数据。为什么会出现这种现象呢?我们可以用一个例子来说明。

比如,用同一个IP去访问我们的SEO网站,但是一个是用的台式的电脑,一个是用的笔记本,那么网站流量统计工具显示的数据就会是2个UV,1个IP。这时UV的数据就会大于IP的数据。

但是,再比如,只是用一个台式电脑访问我们的SEO网站,但是一会拨一个号换一个IP,那么这时候网站流量统计工具显示的数据的UV就为1,但是IP的数据就会高于UV的数据。因此,IP和UV之间的数据并不一定存在比例关系,两者之间的数据也不是此消彼长的关系。

3.IP和PV之间的关系:

那么IP和PV的关系如何呢?如果一个IP刷新了网站1000次,网站的PV就为1000,所以从这点看二者之间没有多大关系。但是,我们可以通过IP和PV之间的数据差异,来更加深入的理解网站的流量数据。

如果IP和PV的数据悬殊很大,比如,我们在查看网站流量数据时发现网站的PV是1000,IP为100,那么说明这个站点平均一个IP访问了网站内容10次,说明网站内容还是比较受欢迎的,所以访客才愿意在网站中停留那么久的时间,并浏览了那么多的网站页面内容。

但是如果IP和PV的数据很接近,比如,网站的IP为100,PV为110,说明一个IP也就访问了网站内容大约1次,就说明网站内容的可读性太差,客户点击进去之后就离开了,没有有过多的停留。

如果网站流量统计这样的数据过多的话,站长就需要对网站内容进行深入思考了,以便更好的提高网站的流量。

对于社区类、新闻类网站的建设维护,浏览量提供了很多的数据支撑。

那么,如何实现一个很好的浏览量统计,这是一个值得开发者思考的问题。

完整的需求

  1. 用户可以是匿名的,不需要登录
  2. 每当一个用户点击了一个文章的详情页面,这个文章的浏览量应该+1
  3. 用户应该能立即看到自己点击文章后浏览量+1的反馈
  4. 浏览量这个数据存在Mysql和ElasticSearch里面,要最终一致(不要求强一致)
  5. 作者可能在后台编辑文章,然后保存文章。如果在这期间有浏览量的增加,保存文章的时候不应该覆盖掉这段时间的浏览量增量。
  6. 应该在服务端对用户的请求去重,防止用户不断刷新或者使用爬虫不断请求某个API(建议通过IP)
  7. 要过滤掉百度和谷歌的爬虫请求(根据User-Agent头判断,可以先不做)
  8. 要高性能地实现“查看浏览最多文章列表”的功能。
  9. 尽可能优化性能,满足多个用户的高并发需求。

分析之后,我们可以总结出9条简单地需求,那么,最佳的实践是什么呢?

实现方案

根据我们的需求,我们采用最简单的方式,实现相关需要

计算规则如下:

未登录

每个session新增一个访问

登录后

每个用户每天新增一个访问

相关流程设计如下:

上述方案,是最佳实现中的核心思路

那么,为了更好地实现,可以通过配合Redis,进行操作,此处不再多说明,相关代码的实现比较容易!

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 完整的需求
  • 实现方案
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com