假设短链服务时 dl.c
db 设计为
| id | rawurl |
|---|---|
| 1 | www.baidu.com |
我创建 www.baidu.com 的短链就直接写一条单纯的 url 记录,然后以主键 id 作为 dl.c 的短码,
请求 dl.c/1 直接查 id 为 1 的 rawurl 进行重定向,这样有啥问题吗?
目前能想到的就是会被别人遍历,但是好像也没啥问题?
id 用 bigint 也足够用
1
Jooooooooo 2021 年 1 月 22 日
公开 id 不应具备可遍历属性
|
2
FS1P7dJz 2021 年 1 月 22 日 提问
那么当别人在此使用你的服务生成一个一样的 www.baidu.com,你是变成 dl.c/2 还是继续 dl.c/1 呢? 再提问 如果你稍微需要做一些统计服务,那么 dl.c/1 和 dl.c/2 都是统一个网址,你又如何进行合并呢? 继续提问 如果是 baidu.com/1.html 和 baidu.com/2.html,你又如何进行统计呢? 以上都是基于亿级数据考虑 不过如果你只是造个自己用的轮子...倒也无妨考虑这么多 |
3
imdong 2021 年 1 月 22 日 via iPhone
自己用,完全没问题。
短网址核心代码无非就这么几行。 保存对照表,以及取出数据并跳转。 其余的一切都是基于安全性,速度等角度进行的优化罢了。 考虑到数据越来越多,会将 10 进制进行 62 进制转换以缩短链接。 数据量越来越多,会使用缓存等方式优化查询速度等。 |
4
shakaraka PRO |
5
opengps 2021 年 1 月 22 日
我就是这么用的,不过我不是用的 int,而是自己指定
|
6
6IbA2bj5ip3tK49j 2021 年 1 月 22 日
int 不够短,本身就和短链接相违背了。
|
8
iCD OP |
9
felinx 2021 年 1 月 25 日
用 hashid 啊,够短且不能被遍历的 https://hashids.org/
|