假设短链服务时 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-01-22 18:40:33 +08:00
公开 id 不应具备可遍历属性
|
2
FS1P7dJz 2021-01-22 19:01:31 +08:00 1
提问
那么当别人在此使用你的服务生成一个一样的 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-01-22 19:08:48 +08:00 via iPhone
自己用,完全没问题。
短网址核心代码无非就这么几行。 保存对照表,以及取出数据并跳转。 其余的一切都是基于安全性,速度等角度进行的优化罢了。 考虑到数据越来越多,会将 10 进制进行 62 进制转换以缩短链接。 数据量越来越多,会使用缓存等方式优化查询速度等。 |
4
wunonglin 2021-01-22 19:14:38 +08:00 2
|
5
opengps 2021-01-22 19:25:22 +08:00
我就是这么用的,不过我不是用的 int,而是自己指定
|
6
6IbA2bj5ip3tK49j 2021-01-22 20:45:30 +08:00
int 不够短,本身就和短链接相违背了。
|
7
iCD OP |
8
iCD OP |
9
felinx 2021-01-25 10:28:39 +08:00
用 hashid 啊,够短且不能被遍历的 https://hashids.org/
|