锁定老帖子 主题:微薄短域名原理及作用
精华帖 (0) :: 良好帖 (1) :: 新手帖 (13) :: 隐藏帖 (11)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-29
風一樣的男子 写道 主要是因为微薄140限制,如果没限制,谁那么无聊搞个映射?
如果只是字数问题的话,照我说直接 <a href="http://bjwb.bjd.com.cn/html/2011-03/23/content_382746.htm" target="_blank"><url></a>, 象这样统一处理就 OK了,还搞什么短域名。 |
|
返回顶楼 | |
发表时间:2011-03-29
最后修改:2011-03-29
之前刚好看过,分享一下。
def saveLongUrl(String longUrl) id = NoSqlDb.get("url:id") id++ #Id is hex value. e.g. FF = 256, NoSqlDb.set("url:" + id + ":id, longUrl) return id end 申请一个域名 douniwuan.fm 假设上面返回的id为ff http://douniwuan.fm/ff 调用下面的函数 def onclickUrlId(String id) String url = NoSqlDb.get("url:" + id + ":id, longUrl) redirectTo(url) end 下一次保存的短址为 http://douniwuan.fm/100 http://douniwuan.fm/101 ... http://douniwuan.fm/fff 也可以直接在页面生成 <a href="http://www.google.com">http://douniwuan.fm/ff</a> 但这样就不能记录用户行为了。 |
|
返回顶楼 | |
发表时间:2011-03-29
其实我觉得最简单的时间方式就是买下t.cn这个域名,,然后在里面做一个过滤器,对后面的url进行过滤,然后在该服务器上用一个文件村下t.cn后面的url跟真实url的对应关系,,
|
|
返回顶楼 | |
发表时间:2011-03-29
楼主显然对这个问题没有怎么研究
|
|
返回顶楼 | |
发表时间:2011-03-29
研究过类似的一个高效的实现,当然思路非我原创,也是网上前辈们的经验
实现方式是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有兴趣可以研究一下 |
|
返回顶楼 | |
发表时间:2011-03-29
denger 写道 風一樣的男子 写道 主要是因为微薄140限制,如果没限制,谁那么无聊搞个映射?
如果只是字数问题的话,照我说直接 <a href="http://bjwb.bjd.com.cn/html/2011-03/23/content_382746.htm" target="_blank"><url></a>, 象这样统一处理就 OK了,还搞什么短域名。 应该不仅仅是140限制,可能也是为了避免同样的链接被大量用户引用,缩短链接长度以便节省存储空间,微薄的用户关注的都是一些热点话题,用户发的不同微薄中出现同样的链接是比较常见的。 |
|
返回顶楼 | |
发表时间:2011-03-30
weiqiang.yang 写道 有不少开源实现的
比如 http://www.2expertsdesign.com/php/free-url-shortening-scripts 和 http://yourls.org/ 应该不会太复杂,有兴趣可以下来研究研究 恩恩。3Q。有空研究一下! |
|
返回顶楼 | |
发表时间:2011-03-30
denger 写道 風一樣的男子 写道 主要是因为微薄140限制,如果没限制,谁那么无聊搞个映射?
如果只是字数问题的话,照我说直接 <a href="http://bjwb.bjd.com.cn/html/2011-03/23/content_382746.htm" target="_blank"><url></a>, 象这样统一处理就 OK了,还搞什么短域名。 你这个存储起来需要更大的空间。连接太长啦。 我提到的这块东西。估计会更复杂。在存储里不会存html标签。例如A标签! |
|
返回顶楼 | |
发表时间:2011-03-30
dmhorse 写道 之前刚好看过,分享一下。
def saveLongUrl(String longUrl) id = NoSqlDb.get("url:id") id++ #Id is hex value. e.g. FF = 256, NoSqlDb.set("url:" + id + ":id, longUrl) return id end 申请一个域名 douniwuan.fm 假设上面返回的id为ff http://douniwuan.fm/ff 调用下面的函数 def onclickUrlId(String id) String url = NoSqlDb.get("url:" + id + ":id, longUrl) redirectTo(url) end 下一次保存的短址为 http://douniwuan.fm/100 http://douniwuan.fm/101 ... http://douniwuan.fm/fff 也可以直接在页面生成 <a href="http://www.google.com">http://douniwuan.fm/ff</a> 但这样就不能记录用户行为了。 恩恩。赞!支持! |
|
返回顶楼 | |
发表时间:2011-03-30
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有兴趣可以研究一下 没太看懂。稍后补补可。学习一下! |
|
返回顶楼 | |