短链服务

示例(不可用)
长链:http://wqigdsk.sq.com?id=2011&name=china
短链:http://cq.cn/Rb2IDs

原理

将长链存入数据库并返回自增Id,然后把Id转换成62进制
假设短码为6位,每一位由[a-z,A-Z,0-9]共62个字母组成,则共有62^6=568亿种组合,已经够用。

在浏览器中输入上面的地址,会向http://cq.cn发送HTTP GET请求,并传短码。
此时,在数据库中查询短码记录,结果存在重定向到长链;结果不存在,返回HTTP Status Code 404或不跳转

301永久重定向,302临时重定向
短地址一经生成就不会变化,所以用 301 是符合 http 语义的。同时对服务器压力也会有一定减少。
但是如果使用了 301,我们就无法统计到短地址被点击的次数了。而这个点击次数是一个非常有意思的大数据分析数据源。能够分析出的东西非常非常多。所以选择302虽然会增加服务器压力,但是我想是一个更好的选择。

相关问题

1. 被恶意攻击,消耗自增Id
同一长链返回同一短码,IP限制

2. 短码安全问题
在自增Id从1开始时,短码可以被推断出,可以扩展短码,增加一位随机码

3. 同一长链短码是否应该相同
应该相同,将长链和短码对应缓存,在转换成短码之前进行缓存匹配

posted @ 2019-05-17 11:22  AI柚子  阅读(344)  评论(0编辑  收藏  举报