短网址的生成原理是什么?
我GitHub上的项目链接变成了这么短
http://suo.im/zlqlb
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我GitHub上的项目链接变成了这么短
http://suo.im/zlqlb
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
0-9 a-z A-Z 你看看主流的短连接是几位的 每一位随机取 基本不会重复 保险起见数据库查一遍是否重复,然后key和url存入数据库,前期量小的话 很简单 直接根据key取url然后重定向,后期访问压力大了,基本就是读压力,前端档一个缓存就好了
短网址的发展历史其实不长,他的出现主要是基于微博(如新浪微博,http://t.cn,http://url.cn)、短博客、移动营销的崛起而发展起来的。在这些环境中,过长的网址使得用户视觉体验度极差,所以有必要将很长的网址进行缩短。那么短网址缩短的原理是什么呢?
短网址的工作原理主要有两种形式:
将原网址通过
MD5
转化成一串小字母,这种方法简单,但是这种算法是不可逆的,所以别想着直接反转短地址,如果你想深入了解这种算法,可以百度“MD5”+”短网址”
数据库类型的存储式,通过给每个长网址自动分配
ID
和CODE
来实现网址的转换,然后当用户访问时,通过查询数据里面ID
和CODE
对应的原网址,实现实时跳转。这种方式是可逆的,而且便于管理和统计,目前主流的短网址程序都是应用的这种方式,如:phurl
,yourl
等。php短地址的算法:
原理就是给每一个过来的长地址,发一个号即可,小型系统直接用mysql的自增索引就搞定了。如果是大型应用,可以考虑各种分布式key-value系统做发号器。不停的自增就行了。
第一个使用这个服务的人得到的短地址是http://xx.xx/0
第二个是 http://xx.xx/1 第11个是 http://xx.xx/a 第依次往后,相当于实现了一个62进制的自增字段即可。
原理?数据库而已
数据库结构
token 短连接token,5个长度字符可以容纳(52个大小写字母+10个数字)5次方=916132832
url 原始链接
你的是GitHub的把长连接缩短成短链接,下面是网址:
https://git.io/
常用的缩短网址有:
Google:https://goo.gl/
bitly: https://bitly.com/
上面答非所问,改正下,不知道你有没有发现:
就是短链接定向到你的长链接去了,而长短链接的对应关系一般是会存储到库因为很难有算法能做到长短链接一一对应,所以一般是存储到mongodb以及缓存吧