PV、UV、IP、VV各种名词解释
PV、UV、IP、VV各种名词解释
PV
介绍
PV即Page View,网站浏览量,指页面浏览的次数,用以衡量网站用户访问的网页数量。
用户每次打开一个页面便记录1次PV,多次打开同一页面则浏览量累计。一般来说,PV与来访者的数量成正比,但是PV并不直接决定页面的真实来访者数量,如同一个来访者通过不断的刷新页面,也可以制造出非常高的PV。
具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个页面或某个网页多少次。PV是指页面刷新的次数,每一次页面刷新,就算做一次PV流量。
统计方法
从浏览器发出一个对网络服务器的请求(Request),网络服务器接到这个请求后,会将该请求对应的一个网页(Page)发送给浏览器,从而产生了一个PV。那么在这里只要是这个请求发送给了浏览器,无论这个页面是否完全打开(下载完成),那么都是应当计为1个PV。
在Spring Boot的控制器中,每当处理一个请求时,你可以增加一个计数器或在数据库中存储每次请求的信息。
思路1、使用@ControllerAdvice和@ModelAttribute来全局地增加计数。
思路2、创建一个Aspect类:使用@Pointcut定义切入点,比如所有带有@RestController注解的类的所有方法,使用@Before或@Around在目标方法执行前增加PV计数。
注意事项
需要处理同一页的重复刷新问题,确保不会过度计数。
UV
介绍
UV即Unique Visitor,独立访客数,指一天内访问某站点的人数,以cookie或者Token为依据。
1天内同一访客的多次访问只记录为一个访客。通过IP和cookie是判断UV值的两种方式。
用Cookie分析UV值
当客户端第一次访问某个网站服务器的时候,网站服务器会给这个客户端的电脑发出一个Cookie,通常放在这个客户端电脑的C盘当中。在这个Cookie中会分配一个独一无二的编号,这其中会记录一些访问服务器的信息,如访问时间,访问了哪些页面等等。当你下次再访问这个服务器的时候,服务器就可以直接从你的电脑中找到上一次放进去的Cookie文件,并且对其进行一些更新,但那个独一无二的编号是不会变的。
统计方法
使用Cookie、本地存储(LocalStorage)或SessionStorage来标识每个独立的访客。在访客首次访问时设置一个唯一标识符,并在后续访问中检查这个标识符来判断是否为新访客。
更常用的方法是使用UUID或其他唯一标识符,并将其存储在客户端的Cookie或localStorage中,然后在服务器端根据这个标识符来统计UV。
另一种方法是使用Redis或数据库中的缓存机制来存储这些标识符,并设置过期时间。
注意事项
考虑到隐私政策和浏览器对Cookie的限制,可能需要使用更现代的技术如指纹识别(Fingerprinting)。
VV
介绍
VV即Visit View,访客访问的次数,用以记录所有访客一天内访问网站的次数。
统计方法
每次访客开始一个新的会话时,增加一次VV。会话通常基于一段时间的不活动来界定,例如30分钟无操作后,新的访问将被视为新的一次。
当访客完成所有的浏览并最终关掉该网 站的所有页面时,便完成了一次访问,同一访客一天内可能有多次访问行为,访问次数累计。
注意事项
合理设定会话超时时间,避免将短暂的中断也视为新访问。
IP
介绍
IP即独立IP数,指一天内使用不同IP地址的用户访问网站的次数,同一IP无论访问了几个页面,独立的IP数均为1。
这里需要注意的是:如果两台机器访问服务器而使用的是同一个IP,那么只能算是一个IP的访问。
IP和UV之间的数据不会有太大的差异,通常UV量和比IP量高出一点,每个UV相对于每个IP更准确地对应一个实际的浏览者。
统计方法
记录每个HTTP请求的源IP地址,并在一天内去重计数。
从HTTP请求中读取X-Forwarded-For或REMOTE_ADDR头来获取客户端的IP地址。 将IP地址存储在一个集合或数据库中,并使用它来计算独立的IP数。
注意事项
需要考虑动态IP和共享网络环境(如企业或学校网络),这些情况下多个用户可能共享一个IP地址。
一些用户可能会使用代理或VPN服务,这可能导致IP统计的偏差。
UV大于IP
这种情况就是在网吧、学校、公司等,公用相同IP的场所中不同的用户,或者多种不同浏览器访问网站,那么UV数会大于IP数。
UV小于IP
一般的家庭网络中,大多数电脑使用独立光纤,所以同一个用户在家里不同时间访问网站时,IP可能会不同,因为它会根据时间变动IP,即动态的IP地址,但是实际访客数唯一,便会出现UV数小于IP数的情况。
总结
需要考虑同源策略和跨域问题,确保前端可以正确地向后端发送请求。
需要处理好安全性和隐私问题,比如不要收集敏感的个人信息,遵守GDPR等数据保护法规。
考虑到性能影响,避免在高流量页面上频繁写入数据库,可以先在内存中缓存数据,定时批量写入。
以上是一个基本的实现思路,具体实现细节会根据项目的实际需求和技术栈而有所不同。