浏览 11373 次
锁定老帖子 主题:短网址算法实现
精华帖 (0) :: 良好帖 (0) :: 新手帖 (12) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-23
最后修改:2010-01-23
将重定向到http://www.iteye.com/topic/577820 使用短网址的主要优点: 1.便于记忆,而不是记50个或多个字符的URL 2.当你想通过短信发送一个50个字符的URL给朋友,你只留下您的信息90个字符。 实现自己的短网址需要如下步骤: 1.定义您自己的网址映射算法。 2.有一个数据库来存储映射的网址。 3.从数据库的短网址的映射找到原始的URL 我不知道别人是如何创建URL映射算法,但在这里,我将告诉你们,我的简单而快速的短网址实现: 该系统使用6个短码字符来表示任何长度的网址。 有效的字符代码是ASCII 'A'到'Z'和'0'的'5',其中每个字符包含2 ^ 5(32)状态。 6短码字符可用于绘制32 ^ 6(1073741824)的网址 首先,你需要一个数据库表来存储和检索你映射的网址。 CREATE TABLE mappedURL (的CREATE TABLE mappedURL( shortCode char(6) not null, lognURL text not null, PRIMARY KEY shortCodeInd (shortCode), ); 其次,你需要定义一个算法将长的URL映射到短的URL。 以下是建议的算法: loop1: while true loop1: calculate md5 of the URL loop2: from 1st 4 bytes to 4th 4 bytes of md5 result loop2: cast the 4 bytes to an integer loop3: for shortCodeChar[0] to shortCodeChar[5] use 1st 5 bits of the integer to find the value in codeMap remove 5 bits from the integer end loop3 save shortCodeChar as shortCode if shorCode does not exist in database insert the short code and original URL into database break loop1: else retrieve the stored URL from database if original URL equals to URL stored in database break loop1: end if end if end loop2 insert '-' end loop1 return shortCode Note: codeMap contains value of valid characters from 'a' to 'z' (index 0 to 25) and '0'-'5' (index 26 to 31). 第三,你需要创建一个网页,从数据库的短网址的映射找到原始的URL,并重定向之。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-23
<?php $num = 'zzzzzz'; echo pow(36, 6); // 2176782336 echo base_convert($num, 36, 10); // 2176782335 ?> Long.toString(2176782335L, 36); // zzzzzz 你甚至可以定义到62进制,0-9a-zA-Z。 够用了吧…… |
|
返回顶楼 | |
发表时间:2010-01-25
直接地址重写不行吗?
|
|
返回顶楼 | |
发表时间:2010-01-25
引用 1.便于记忆,而不是记50个或多个字符的URL 2.当你想通过短信发送一个50个字符的URL给朋友,你只留下您的信息90个字符。 1、便于记忆么?我倒不觉得,除非网址特别的长,再说了有多少人会专门记忆那么长的网址呢? 2、我觉得这个东西,也就是用于网址的压缩(数据压缩)有用处。 |
|
返回顶楼 | |
发表时间:2010-01-25
lz_cleaner 写道 引用 1.便于记忆,而不是记50个或多个字符的URL 2.当你想通过短信发送一个50个字符的URL给朋友,你只留下您的信息90个字符。 1、便于记忆么?我倒不觉得,除非网址特别的长,再说了有多少人会专门记忆那么长的网址呢? 2、我觉得这个东西,也就是用于网址的压缩(数据压缩)有用处。 的确不是为了便于记忆 短地址的目的:像twitter之类的有字符限制,包括短信, 还有我看到过一本纸制的技术数,也写了短地址,方便读者把地址敲到地址栏上 |
|
返回顶楼 | |
发表时间:2010-01-25
urlrewriter
|
|
返回顶楼 | |
发表时间:2010-01-25
网上应该有开源版本的短地址实现,可以参考吧,随即映射偷懒一下可以直接使用MD5或者sha吧,数据库可以使用key-value型,性能和未来的可扩展型可能会好些。
|
|
返回顶楼 | |
发表时间:2010-01-25
目前国内的新浪微博(类twitter)就是用的短网址,不过你在写微博的时候是按长的字符计算字数,发表之后才会换算成短的url,感觉没起到缩短的作用,就是别人看的时候好看一些。
感觉md5算出来的还是长吧,短网址一般固定域名后面就是用5个字符区别网址 |
|
返回顶楼 | |
发表时间:2010-01-25
最后修改:2010-01-27
freesky110 写道 使用短网址的主要优点: 1.便于记忆,而不是记50个或多个字符的URL 2.当你想通过短信发送一个50个字符的URL给朋友,你只留下您的信息90个字符。 便于记忆不赞同,只是短了。比起来一长串有规律的字符串,它更不容易记忆。 域名申请短点,它就更短了。 |
|
返回顶楼 | |