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 异步导出