`
dbwang
  • 浏览: 57402 次
  • 性别: 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  
还有一个重要作用是做统计和挖掘。每一次点击和引用服务提供方都有记录和跟踪。

相关推荐

    一个php短网址的生成代码(仿微博短网址)

    PHP短网址生成代码的实现涉及到几个关键点:字符编码转换、哈希算法的应用以及短网址的...当然,实际生产环境中,短网址服务还会涉及到更多的细节和优化,比如防刷限制、字符替换规则、域名的使用以及访问统计等功能。

    短网址还原程序(UnShortUrl) 2.8.rar

    短网址还原程序(UnShortUrl)用PHP写成,作用就是将这些短网址还原为本来的面目。 支持还原目前流行的各种短网址,如:goo.gl、t.cn、、url.cn、bit.ly等。 原理挺简单,就是通过curl来获取HTTP header的location...

    新浪短网址

    - **生成短网址**:将这个标识符与新浪短网址服务的基础域名结合,形成一个完整的短网址。 - **返回结果**:用户获取到生成的短网址,可以进行分享。 3. **使用场景** - **社交媒体分享**:在微博、微信等平台,...

    php生成短网址/短链接原理和用法实例分析

    在我们的项目当中,如果需要更好传播我们的活动链接,但是链接太长1来是不美观,2来是太过于“笨重”,例如拼多多,淘宝联盟,他们的推广链接都是有短链接的,还有新浪微博。 但是,这些始终都是别人的,我们调用...

    新浪长网址转短网址转换器

    7. **使用场景**:新浪短网址转换器适用于多种场合,如在微博分享链接,避免长链接占据过多空间;在电子邮件中发送短链接,使邮件看起来更整洁;在印刷媒体上使用,因为空间有限,短网址更容易容纳。 了解以上知识...

    推荐一份阿里大厂面试时的几道题目

    - **DNS解析过程**:域名解析的基本原理及其流程。 - **TCP/IP协议栈**:各层协议的功能及其相互关系。 - **网络安全技术**:如何保护网络免受攻击。 #### 8. 邮件发送系统优化 **知识点背景:** 在高并发场景下,...

    PicBed:这是Paul Yuan的图床

    3. **短链接生成**:上传的图片会被赋予一个短链接,这个链接可以在任何支持超链接的地方使用,使得图片分享更便捷。 4. **多平台支持**:PicBed可能支持与多个社交媒体平台、博客系统(如微博、微信、GitHub、...

    最常用的八种网站推广方法

    将有关的网站推广信息发布在其他潜在用户可能访问的网站上,利用用户在这些网站获取信息的机会实现网站推广的目的,适用于关键信息可以在短时间内引起人们广泛关注的情况,特别是一些时效性强的产品信息以及购买信息...

    《计算机网络》第六章 课后答案.pdf

    - **作用对象**:ARP负责IP地址到MAC地址的转换,DNS则负责域名到IP地址的转换。 - **作用范围**:ARP主要用于局域网内,DNS则覆盖整个互联网。 #### 问题6-10: 网关与路由器的关系 - **区别**: - **定义**:...

Global site tag (gtag.js) - Google Analytics