URL缩短服务的实现(Bit.ly,j.mp,tinyURL,Go.ly…)
我所知道的URL缩短服务是从Twitter使用tinyurl.com来缩短微薄中的域名开始流行起来的,国内的新浪,腾讯微薄都使用了。
Twitter最开始使用tinyurl.com,现在在用的是Bit.ly。
为什么需要URL缩短业服务?
URL缩短服务简单的说就是把一个很长的url地址做成一个很短的url来跳转。这样的好处就是可以把原本一长串的URL地址变成很少的字符。
比如:http://www.google.com.hk/search?hl=zh-CN&newwindow=1&safe=strict&q=baidu&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&aqi=g10&aql=&oq=&gs_rfai=
经过缩短之后就是(本文用bit.ly做例子):http://bit.ly/c9gnGZ
这样节省了不少空间,并且看起来也工整很多。
其实还有个很重要的作用就是可以根据域名的流量对网站进行统计和分析,这个很多服务器提供商已经在做了。
为什么微薄上开始流行?
我们都知道一篇微薄的内容都是很简短的,一般都控制在150字以内,但是有的一个URL地址可能都大于150字了,所以无法发送出去,就算小于规定长度,一篇微薄被一个URL就占用了大部分的位置也会很不划算。所以URL缩短服务在微薄中的作用尤为重要。
怎么实现呢?
首先需要一个很短的域名,这个优势很重要,tinyURL.com和Bit.ly明显的劣势就是域名太长。
不管域名,我这里讨论下功能的实现。
1.生成地址的API
在发表这个URL(如http://www.zm17.com/?p=152)地址的时候需要调用提供的API来生成一个独一无二的缩短域名,例如http://bit.ly/abc。
这里需要保证http://bit.ly/abc的唯一性。
我们可以设想一个数据表,有3个字段分别是:(也可以不用shorturl,每次请求都处理一次ID值)
id 自增长编号
shorturl 缩短处理后的URL
rawurl 原URL
在接受到原URL后,查看最大ID号(为了提高效率我们可以先不用数据库来获得这数字,用文件来保存,这里最大编号假设为maxid)
那么此URL的编号应该是thisid = maxid+1
通过处理thisid得到一个短的独一无二的字符串,这里是abc。实现的算法很多,这里就不啰嗦了。
然后保存在数据库中去。
2.实现跳转
有用户请求http://bit.ly/abc这个地址的时候,去数据库中查询shorturl同行的rawurl,然后重定向。
POSTED ON 2010年06月2日,