短链服务
示例(不可用)
长链: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. 同一长链短码是否应该相同
应该相同,将长链和短码对应缓存,在转换成短码之前进行缓存匹配
作者:AI柚子
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,如发现错误,欢迎指正。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。