「短网址服务」产品需求
产品需求文档(PRD)
短网址服务系统
1. 文档信息
- 文档版本:V1.0
- 编写人:xxx
- 评审人:xxx
- 创建日期:2025-09-24
- 最后修改日期:2025-09-25
2. 背景与目标
2.1 背景
在社交媒体、电商推广、活动运营等场景中,长链接往往冗长、不便于传播,甚至在部分平台(如短信、微博、微信)中容易折行或被截断。短网址服务通过生成简洁的短链和二维码,提高了链接的分享体验,并能在此基础上提供统计、管理和 API 接入能力。
2.2 产品目标
-
核心目标
- 提供一个稳定、高性能的短网址生成和跳转服务;
- 支持用户通过 前端页面 和 API 接口 快速生成短网址;
- 提供 用户 Dashboard,支持历史管理、统计分析、自定义配置。
-
价值目标
- 个人用户:便捷生成短链,支持二维码,方便分享。
- 注册用户:集中管理历史短链,查看访问统计,自定义短码。
- 企业用户:批量生成短链,接入 API,支持自定义域名,追踪营销效果。
-
长期愿景
- 逐步演进为 链接管理与数据洞察平台,支持动态跳转、访问策略和精准分析,成为 Link as a Service (LaaS) 平台。
3. 用户与场景
3.1 用户角色
- 游客用户:无需注册即可生成短链,体验基础功能。
- 注册用户:登录后可管理短链,查看统计,支持自定义短码。
- 企业用户/开发者:通过 API 或 Dashboard 批量管理短链,支持团队协作、自定义域名和数据分析。
3.2 核心使用场景
- 普通分享:用户将长链接转为短链,并分享至社交媒体。
- 营销活动:企业批量生成短链并嵌入二维码,用于广告、短信推广。
- 系统集成:开发者通过 API 接入短链能力,内嵌至自身业务流程中。
- 效果追踪:注册用户或企业用户查看短链点击量、来源和地域分布。
4. 功能需求
4.1 短网址生成
- 输入长链接 → 生成短链(自动生成唯一短码)。
- 支持自定义短码(如
s.io/mybrand
)。 - 支持设置过期时间(7天、30天、永久)。
- 自动生成二维码(PNG/SVG,支持下载)。
- 原生支持微信/抖音小程序二维码,跳转指定页面
4.2 短网址访问与跳转
- 访问短链 → 301/302 跳转至原始链接。
- 跳转统计:点击次数(PV)、独立访客(UV)、来源、设备类型、地域分布。
- 异常处理:已过期、无效短链时提示错误页。
4.3 API 接口
POST /api/shorten
:生成短链。GET /api/info/{code}
:获取短链信息及统计。DELETE /api/{code}
:删除短链。GET /api/list
:获取用户短链列表。- 鉴权:支持 API Key,限制调用频率。
4.4 用户 Dashboard
- 短链管理:查看列表、搜索、修改属性、删除。
- 统计报表:访问趋势图、来源分布、设备统计。
- 用户设置:API Key 管理、账号信息、自定义域名配置。
4.5 前端页面
- 首页输入框:长链 → 短链 + 二维码。
- 支持复制、一键下载二维码。
- 登录/注册入口 → Dashboard。
- 移动端自适应。
5. 非功能需求
-
安全性
- 短链唯一性保证;
- 防止恶意网站生成(接入黑名单库);
- HTTPS 强制访问,支持 HSTS;
- API 限流与鉴权。
-
性能
- 跳转延迟 ≤ 50ms;
- 单节点 QPS ≥ 5k;
- 支持分布式扩展(水平伸缩)。
-
可用性
- SLA ≥ 99.99%;
- Redis 缓存加速;
- 支持多机容灾和数据备份。
-
扩展性
- 插件化统计支持(可对接第三方分析系统);
- 短码生成策略可替换(Base62、Hash、雪花算法)。
6. 关键指标(KPI)
-
用户侧:
- 短链生成成功率 ≥ 99.99%;
- 注册用户 30 日留存率 ≥ 30%;
- 企业 API 接入数 ≥ 50(上线半年目标)。
-
系统侧:
- 平均响应时间 ≤ 100ms;
- 峰值跳转成功率 ≥ 99.99%;
- 恶意链接拦截率 ≥ 90%。
7. 未来规划(V2+)
- 批量生成短链(CSV 导入/导出)。
- 动态短链(按地域/设备跳转不同地址)。
- 访问控制(密码保护、次数限制、IP 限制)。
- 短链分组与团队协作。
- SDK 支持(Go/Java/Python/Node.js)。
- 微信小程序 / 浏览器插件扩展。
8. 交付物
- 后端服务:RESTful API、数据库、Redis 缓存、跳转服务。
- 前端页面:首页生成页面 + Dashboard 管理页面。
- 运维体系:Docker 部署、Nginx 反向代理、Prometheus+Grafana 监控。
- 文档:API 文档、用户手册、部署手册。
短网址服务需求对照表
需求类别 | 具体需求 | 功能点 | 技术实现方案 |
---|---|---|---|
基础需求 | 长链接生成短链 | 自动生成唯一短码 | Base62 编码 / 哈希算法 + 数据库存储(MySQL/PostgreSQL) 短码唯一索引 |
自定义短码 | 用户输入自定义 short-name | URL 表增加 custom_code 字段,唯一约束 |
|
短链过期管理 | 设置有效期(7天/30天/永久) | 数据库存储 expire_at 字段,定时清理任务(Cron + 异步队列) |
|
二维码生成 | 短链生成后提供二维码下载 | 后端调用二维码库(Go:github.com/skip2/go-qrcode / Python: qrcode 库),支持 PNG/SVG | |
访问与统计 | 短链跳转 | 输入短链 → 301/302 跳转原始地址 | Nginx 反向代理 / Go HTTP Server;Redis 缓存加速;数据库兜底 |
点击统计 | 记录 PV/UV | Redis 计数器(高性能写入)+ 定时落库 | |
来源分析 | 记录 Referer | HTTP Header 解析并存储 | |
设备识别 | 区分 PC/移动端/浏览器类型 | User-Agent 解析库(UAParser) | |
地域分布 | 统计访问地理位置 | IP 库解析(MaxMind GeoIP / 腾讯 IP 库) | |
API 接口 | 短链生成 API | POST /api/shorten |
RESTful API(Gin/FastAPI/Express),鉴权:API Key + 限流(Redis Token Bucket) |
短链信息查询 API | GET /api/info/{code} |
返回短链信息 + 统计 | |
短链删除 API | DELETE /api/{code} |
删除数据库记录,Redis 缓存失效 | |
用户短链列表 API | GET /api/list |
支持分页、搜索;SQL 分页查询 | |
API 鉴权 | 用户 API Key 管理 | 数据库表 api_keys ,支持限流 + 权限控制 |
|
用户 Dashboard | 短链管理 | 短链列表、搜索、修改、删除 | 前端 Vue/React + 后端 REST API |
数据统计 | 图表展示 PV/UV、来源、设备、地域 | 前端 Chart 库(ECharts / Recharts)+ 后端统计 API | |
用户设置 | API Key 管理、域名绑定 | 表 user_settings ,域名验证(DNS TXT/HTTP 校验) |
|
前端页面 | 首页生成 | 输入长链 → 返回短链和二维码 | Vue/React 前端页面,后端 API 调用 |
一键复制/下载 | 支持复制短链、下载二维码 | JS Clipboard API + FileSaver 下载库 | |
移动端自适应 | 手机端优化 | TailwindCSS / Bootstrap 响应式布局 | |
安全性 | 短码唯一性 | 保证短链不冲突 | 数据库唯一约束(UNIQUE INDEX) |
恶意链接检测 | 防止钓鱼/垃圾链接 | 接入 URL 黑名单库 / 第三方安全检测 API | |
HTTPS 全覆盖 | 防止中间人攻击 | 强制 HTTPS(Nginx + Let’s Encrypt 证书) | |
API 限流 | 防止滥用 | Redis + Lua 脚本限流(令牌桶 / 漏桶) | |
性能与可用性 | 高并发跳转 | 单节点支持 5k+ QPS | Redis 缓存 + MySQL 读写分离 + CDN 边缘缓存 |
缓存加速 | 热门短链快速访问 | Redis Key: short:{code} → long_url |
|
容灾与备份 | 防止数据丢失 | 主从复制 + 定期备份(mysqldump / WAL 日志归档) | |
扩展功能 | 批量生成 | 一次性生成多条短链 | 支持 CSV 导入导出,批处理 API |
动态跳转 | 不同条件跳转不同链接 | 规则表(设备/地域 → 链接),后端路由逻辑 | |
访问控制 | 短链设置密码/次数/IP 限制 | 表字段扩展:access_password 、max_visits 、allowed_ips |
|
多租户支持 | 企业级场景 | 数据库加 tenant_id ,按租户隔离数据 |