找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: AI VPS 教程 Discuz
查看: 13|回复: 0

umami自建网站统计什么原理?

[复制链接]
  • 打卡等级:有点兴趣
  • 打卡总天数:4
  • 打卡总奖励:1310

50

主题

4

回帖

1764

积分

网站编辑

积分
1764

种子元老

发表于 昨天 20:13 | 显示全部楼层 |阅读模式

Umami 自建统计原理

一句话概括:在你的网站嵌入轻量JS追踪脚本,访客浏览器加载脚本后采集页面/浏览器信息,POST上报到你自建的Umami后端服务,后端存入PostgreSQL数据库,后台面板查询数据库做图表展示;主打隐私友好,默认不使用Cookie。

完整流程

1. 前端埋点(访客浏览器)

你在网站 <head> 插入 Umami 给的追踪JS脚本(umami.js)。访客打开页面:

  1. JS加载,不设置Cookie,通过浏览器信息(IP+UA)生成匿名会话标识;
  2. 自动采集:页面URL、标题、referrer来源、屏幕分辨率、浏览器语言、Web性能指标(LCP/INP/CLS);
  3. 页面加载完成触发上报,向你自建Umami服务的 /api/send 发送POST请求,携带payload,里面包含你网站的唯一websiteId;
  4. 支持手动埋点:umami.track() 自定义事件(按钮点击、表单提交等);
  5. 脚本很小,不会拖慢页面;也支持图片 beacon 上报作为降级方案(JS被拦截时)。

注意:Umami不使用第三方Cookie,不追踪跨站用户;访客是匿名,没有持久用户ID。

2. 后端接收(自建Umami服务)

自建的Umami服务(Node.js)接收前端上报:

  1. 校验 websiteId,判断这个站点是否在后台已添加;
  2. 提取请求IP、User-Agent,解析设备、浏览器、操作系统;
  3. 做会话判断:同一个访客一段时间内的多次访问算作同一个会话;
  4. 清洗数据,过滤机器人(基础防爬虫);
  5. 将页面浏览记录、事件记录写入 PostgreSQL 数据库。

3. 数据计算与面板展示

后台Dashboard不是实时预计算,查询时从数据库聚合统计:

  • PV:页面浏览次数
  • UV:独立访客(根据IP+UA组合判断,不是用户ID)
  • 会话数、来源域名、热门页面、设备浏览器占比、Web指标
  • 支持时间范围筛选,前端渲染图表。

关键特点(和Google Analytics最大区别)

  1. 数据主权:所有访问数据保存在你自己的PostgreSQL数据库,不走第三方服务器;
  2. 无Cookie设计:默认不写Cookie,符合GDPR等隐私法规;靠IP+UA识别会话(缺点:同一个局域网多个用户会被合并;IP代理/VPN会影响准确性);
  3. 轻量:追踪脚本只有几KB;
  4. 开源,Docker一键部署自建。

局限

  • IP+UA识别访客不是绝对精准,容易受代理、CDN、内网影响;
  • 基础机器人过滤,复杂爬虫依然会混入统计;
  • 脚本被广告拦截插件(AdGuard等)拦截 → 数据丢失;
  • 因为不用Cookie,跨设备无法识别同一个真实用户。

简单架构图

访客浏览器 → umami.js采集数据 → POST上报 → 自建Umami后端(Node) → PostgreSQL数据库 → Umami后台面板查询绘图

发布者声明:该内容包含AI创作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|GeekSay

GMT+8, 2026-9-28 06:21 , Processed in 0.062385 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表