`
dbwang
  • 浏览: 56522 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

微薄短域名原理及作用

阅读更多

最近呀。微博在国内火的的”一塌糊涂“。作为技术人员对其中的短域名比较感兴趣,很好奇这么做的原因,及实现这个的原理!希望知道的进来讨论一下哈!

 

例如:http://url.cn/1zJdGX  解析以后是 http://bjwb.bjd.com.cn/html/2011-03/23/content_382746.htm

 

 

补充:

 

经过讨论这么做的好处大致:

 

1.广告效益,方便记忆!!

 

2.方便做统计和挖掘。每一次点击和引用服务提供方都有记录和跟踪。

 

3.可能也是为了避免同样的链接被大量用户引用,缩短链接长度以便节省存储空间,微薄的用户关注的都是一些热点话题,用户发的不同微薄中出现同样的链接是比较常见的。

4.存储到数据库可能是纯文本???待讨论!

 

 

实现原理:

 

基本是上通过key,value的方式进行存储。但是最终存储在nosql,还是关系数据库,需要进一步讨论》》》

 

大家继续给力哈!!

 

 

分享到:
评论
46 楼 lj30936 2011-04-11  
对程序员来说,错别字就像语法级的bug,写的时候尽量注意点,不是‘薄’,是‘勃’。。。
45 楼 猫尾摆摆 2011-04-07  
方便记忆纯属乱编,无非是微博前期140个字的限制而已。。。。。。。
44 楼 xiaojiankaka 2011-04-06  
为啥我总觉得这个“薄”字看着怪怪的~
43 楼 yizhilong28 2011-04-06  
微薄 or 微博?
42 楼 xzq2002 2011-04-05  
httpclient_bd 写道
研究过类似的一个高效的实现,当然思路非我原创,也是网上前辈们的经验

实现方式是nginx+tt+tc做转发

具体原理是nginx代理到tt的服务端口

稍微修改一下tt的源码,将tt的http协议返回的东西稍作修改, 原来返回value的地方修改为返回302的http报文,把tc里拿到的value作为location回送给浏览器,重新编译后启动TT,直接访问即可。
TC里KEY为短地址,VALUE为URL

url要有长期性,memcached的特性不适合干这事。

tc=tokyo cabinet
tt=Tokyo Tyrant

LZ有兴趣可以研究一下


这个不错,能够减少中间获取实际地址这一操作
apache不知道能实现不
41 楼 kongshanxuelin 2011-04-04  
非常简单,见我一个Demo:http://u.faqee.com/addURL.jsp,文章地址:http://cxlh.iteye.com/blog/676985
40 楼 kk15378924 2011-04-02  
我就不理解了。。你们怎么推测出的是62位换算。。。实际经过试验,是64位。最后两位分别是[和].各位可以试试sina的短连接,运气好的直接改一个字符为[或者]都可以跳转
39 楼 yujiaao 2011-04-02  
便于手机输入和转发。
38 楼 lovebanyi 2011-04-02  
省空间肯定是不可能的, 因为哪个短网址明显不是压缩算法。而是一种映射,这样的话就必然要求它要同时存储哪个长的地址。
37 楼 wmjie 2011-03-31  
denger 写道
dbwang 写道
denger 写道
風一樣的男子 写道
主要是因为微薄140限制,如果没限制,谁那么无聊搞个映射?

如果只是字数问题的话,照我说直接 <a href="http://bjwb.bjd.com.cn/html/2011-03/23/content_382746.htm" target="_blank"><url></a>, 象这样统一处理就 OK了,还搞什么短域名。


你这个存储起来需要更大的空间。连接太长啦。

我提到的这块东西。估计会更复杂。在存储里不会存html标签。例如A标签!


我知道,我是回答上面: 之所以弄短域名并不是只是因为 (微薄140限制,如果没限制,谁那么无聊搞个映射?)


从客户的角度来看,主要是为了品牌效应。
所有的微博的地址都是 t.cn 开始的域名,这是多么大的广告效应?
t.cn 推广开了以后,会成为微博的代名词。
36 楼 denger 2011-03-31  
dbwang 写道
denger 写道
風一樣的男子 写道
主要是因为微薄140限制,如果没限制,谁那么无聊搞个映射?

如果只是字数问题的话,照我说直接 <a href="http://bjwb.bjd.com.cn/html/2011-03/23/content_382746.htm" target="_blank"><url></a>, 象这样统一处理就 OK了,还搞什么短域名。


你这个存储起来需要更大的空间。连接太长啦。

我提到的这块东西。估计会更复杂。在存储里不会存html标签。例如A标签!


我知道,我是回答上面: 之所以弄短域名并不是只是因为 (微薄140限制,如果没限制,谁那么无聊搞个映射?)
35 楼 xfan1982 2011-03-31  
lotusk 写道
这个其实最主要的不是为了长度,而是为了中国特色的过滤机制,要把某些链接XX

正解
34 楼 dbwang 2011-03-31  
awuminge 写道
各位童鞋显然没有深入了解
不是因为字数限制,微博发布的链接 只要被识别为链接 只占10个字 链接只要不超过140个字符占有字数就不会超过10个字

如果发布10个链接 每个链接100个字符  试问不用短链  展现出来的将会何其丑陋


这是你的结果还是官方的结论!
33 楼 awuminge 2011-03-30  
各位童鞋显然没有深入了解
不是因为字数限制,微博发布的链接 只要被识别为链接 只占10个字 链接只要不超过140个字符占有字数就不会超过10个字

如果发布10个链接 每个链接100个字符  试问不用短链  展现出来的将会何其丑陋
32 楼 xhdwell 2011-03-30  
主要还是空间节省了,本来就140个字符,如果URL老长还能写几个字啊
31 楼 dsjt 2011-03-30  
diogin 写道
晕,代码变成表情了。表情部分是“8 )”。
这样生成的空间理论上有 2^30 约10亿个,不过随着量的增多,肯定会出现碰撞。


function shorten($url, $salt = '') {
    $base62_units = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $base2_unit30 = (('0x' . substr(md5($url . $salt), 0, 8)) * 1) & 0x3fffffff;
    $base62_unit6 = '';
    while ($base2_unit30 > 0) {
        $base62_unit6 .= $base62_units[$base2_unit30 & 61];
        $base2_unit30 >>= 5;
    }
    return $base62_unit6;
}

for ($i = 0; $i < 100; $i++) {
    echo shorten($i) . '<br />';
}


30 楼 luolonghao 2011-03-30  
arust 写道
denger 写道
風一樣的男子 写道
主要是因为微薄140限制,如果没限制,谁那么无聊搞个映射?

如果只是字数问题的话,照我说直接 <a href="http://bjwb.bjd.com.cn/html/2011-03/23/content_382746.htm" target="_blank"><url></a>, 象这样统一处理就 OK了,还搞什么短域名。


应该不仅仅是140限制,可能也是为了避免同样的链接被大量用户引用,缩短链接长度以便节省存储空间,微薄的用户关注的都是一些热点话题,用户发的不同微薄中出现同样的链接是比较常见的。


引入短域名原因就是因为微博字数限制,微博都是纯文本的,不方便加入HTML代码。
29 楼 dbwang 2011-03-30  
diogin 写道
核心只是一个进制转换算法。比如 PHP 实现:

function shorten($url, $salt = '') {
    $base62_units = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $base2_unit30 = (('0x' . substr(md5($url . $salt), 0,) * 1) & 0x3fffffff;
    $base62_unit6 = '';
    while ($base2_unit30 > 0) {
        $base62_unit6 .= $base62_units[$base2_unit30 & 61];
        $base2_unit30 >>= 5;
    }
    return $base62_unit6;
}

for ($i = 0; $i < 100; $i++) {
    echo shorten($i) . '<br />';
}

生成的短地址做 key,原地址做 value,存到一个 kv 数据库里。


恩恩。具体的算法就不想在讨论啦。怎么弄的可以。我相信sina和腾讯的算法也不一定一样!

关键是总体思路。 key,value这样方式是肯定的。但是最终落地是不是数据库就两说啦。

有可能是nosql 的实现。还有就是缓存!

另外我还比较关注。短域名的好处!!大家提了一些。大家继续补充。。。。。过几天我整理汇总哟!!!
28 楼 dbwang 2011-03-30  
liuyf 写道
还有一个重要作用是做统计和挖掘。每一次点击和引用服务提供方都有记录和跟踪。


好,这个说法有道理。赞成。不知道。sina和腾讯用到这个功能没。哈哈!
27 楼 liuyf 2011-03-30  
还有一个重要作用是做统计和挖掘。每一次点击和引用服务提供方都有记录和跟踪。

相关推荐

Global site tag (gtag.js) - Google Analytics