短网址服务
短网址(Short URL) ,顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。 网上的短网址服务一堆堆的,例如谷歌家的goo.gl,bit.ly为推特家提供了bit.ly及为亚马逊家提供了amzn.to,推特家自己的t.co,新浪家的t.cn,百度家的dwz.cn,简直数不过来。 SearchEngineLand曾对国外市面上的URL缩短服务进行了分析总结,列出了推荐使用的和应尽力避免使用的服务。该评测从是否为301转向(永久转向,相对302为暂时转向)、是否支持Tracking(追踪链接的来源)、是否支持主流的Twitter客户端、缩短后的URL字数、是否支持自定义URL、是否支持分享等多个方面进行评价。具体结果见此表。
短网址算法
算法一
- 将长网址md5生成32位签名串,分为4段, 每段4个字节(即32位);
- 对这四段循环处理, 取4个字节(32位), 将他看成16进制串与0x3fffffff(30位1)与操作,即超过30位的忽略处理;
- 这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
- 总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;
算法二
把数字和字符组合做一定的映射,就可以产生唯一的字符串,如第62个组合就是aaaaa9,第63个组合就是aaaaba,再利用洗牌算法,把原字符串打乱后保存,那么对应位置的组合字符串就会是无序的组合。 把长网址存入数据库,取返回的id,找出对应的字符串,例如返回ID为1,那么对应上面的字符串组合就是bbb,同理ID为2时,字符串组合为bba,依次类推,直至到达62种组合后才会出现重复的可能,所以如果用上面的62个字符,任意取6个字符组合成字符串的话,你的数据存量达到500多亿后才会出现重复的可能。
短网址服务测试(基于新浪短地址服务)
短地址服务是否验证长URL?
对于不存在的长地址http://www.mryqu.com/test/test.html,新浪短地址服务没有验证,直接转成了短地址http://t.cn/RtXngGQ 。
如果长url其实是该短地址服务产生的短地址,如何处理?
对于长地址http://t.cn/RtXngGQ ,新浪短地址服务做了检查识别出短地址,并直接按照http://www.mryqu.com/test/test.html返回短地址http://t.cn/RtXngGQ 。
如果长url其实是其他短地址服务产生的短地址,如何处理?
我用长地址http://blog.sina.com.cn/yandongqu 在百度短地址服务获得了短地址http://dwz.cn/3TE3bq ,将其作为新浪短地址服务的输入,新浪短地址服务识别出短地址,获得原始长地址http://blog.sina.com.cn/yandongqu ,并返回相应短地址短地址http://t.cn/RLoGZKa 。
参考
短网址
短网址服务,我们该怎么选?
URL Shorteners: Which Shortening Service Should You Use?
短链接URL系统是怎么设计的?
tinyURL的设计方案与实现【一】