# shortlink-go
极简短链系统(Go + SQLite),由 Python 版本重写而来,内存占用极低、运行稳定可靠。
相比 Python 版本的优势
| 对比项 | Python 版 | Go 版 |
|---|---|---|
| 运行内存 | 约 50–80 MB | 约 5–10 MB |
| Docker 镜像 | 约 150 MB | 约 15 MB |
| 启动时间 | 2–3 秒 | <0.1 秒 |
| 依赖 | Flask + Python 运行时 | 单个静态二进制文件 |
| 并发能力 | 受 GIL 限制 | 原生 goroutine 并发 |
新增功能
- 备注功能:每条短链可添加备注,便于后续检查与识别用途
- 分组功能(可选):为短链分配分组(如“工作”“个人”),支持下拉筛选与自动补全
- 标签功能(可选):为短链添加多个标签(逗号分隔),点击标签即可快速筛选
- 多选删除:支持勾选多条短链并一键批量删除,方便日常维护
- 筛选过滤:顶部筛选栏支持按分组与标签组合过滤
- 数据库兼容:自动检测旧数据库并新增所需列,实现平滑迁移
部署方式
Docker Compose(推荐)
YAML
services:
shortlink:
build: .
# image: yourname/shortlink-go:latest
container_name: shortlink-service
ports:
- "5000:5000"
volumes:
- ./data:/app/data
environment:
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=admin123
# - SECRET_KEY=your-random-secret-key
restart: unless-stopped环境变量说明
| 变量名 | 默认值 | 说明 |
|---|---|---|
ADMIN_USERNAME |
admin | 管理员用户名 |
ADMIN_PASSWORD |
admin123 | 管理员密码 |
DATABASE_PATH |
/app/data/shortlinks.db | 数据库文件路径 |
SECRET_KEY |
change-this-secret-key | Cookie 签名密钥 |
HOST |
0.0.0.0 | 监听地址 |
PORT |
5000 | 监听端口 |
内存优化措施
- SQLite 使用 WAL 模式,连接池上限为 2 个连接
- 通过
embed.FS嵌入模板,避免运行时读取文件 - 采用 HMAC 签名 Cookie,替代服务端 Session 存储
- 编译时使用
-ldflags="-s -w"减小二进制体积 - 异步更新访问计数,降低阻塞影响