3.6.1 统计分析

点击统计与分析

每一次访问 GET /{code} 都会被异步记录为一条点击事件,供后续分析使用。

采集字段

字段 来源 说明
short_link_id 路由解析 关联的短链接
ab_test_variant_id A/B 命中 若命中 A/B 则记录变体
ip 请求 IP 支持 X-Forwarded-For 解析
country / region / city IP 地理库 地理信息
user_agent Header 原始 UA
device / os / browser UA 解析 分解后的设备信息
referrer Header Referer 来源页面
created_at 时间戳 发生时间

异步写入

为了不阻塞短链接跳转(目标 < 10ms),点击记录通过队列异步写入数据库,即使统计库出现短暂延迟也不影响用户体验。

查询接口

接口 说明
GET /api/v1/click_statistics 列出原始点击事件(分页)
GET /api/v1/click_statistics/analysis 聚合分析:按时间、地区、设备等维度
GET /api/v1/short_links/{id}/statistics 单个短链接的汇总
GET /api/v1/statistics/dashboard 仪表板:系统级 KPI
GET /api/v1/statistics/system 系统运行状态
GET /api/v1/statistics/short-links 所有短链接的聚合排名
GET /api/v1/ab_test_click_statistics A/B 点击列表
GET /api/v1/ab_test_click_statistics/{id}/variants A/B 变体统计

导出

目前通过 API 以 JSON 方式输出,可自行在客户端转成 CSV / Excel。若需要内置导出,可参考 app/controller/click_statistic_controller.go 自行扩展。

数据量建议

  • 万级点击 / 天:MySQL 单表即可
  • 十万级 / 天:建议定期对点击表按月分表或冷归档
  • 百万级 / 天:推荐引入专门的日志 / 时序数据库(如 ClickHouse),通过 dwz-server 的事件 Hook 异步导出